You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@submarine.apache.org by li...@apache.org on 2020/09/30 09:50:14 UTC

[submarine] branch master updated: SUBMARINE-640. Remove workbench (vue)

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

liuxun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new 69977a4  SUBMARINE-640. Remove workbench (vue)
69977a4 is described below

commit 69977a45e15573f7a335516e5db855c92ea63b1b
Author: kevin85421 <b0...@ntu.edu.tw>
AuthorDate: Mon Sep 28 23:42:53 2020 +0800

    SUBMARINE-640. Remove workbench (vue)
    
    ### What is this PR for?
    Workbench (vue) is outdated, and thus it should be removed from this repository.
    
    ### What type of PR is it?
    [Improvement]
    
    ### Todos
    workbench-web-ng --> workbench-web
    Update some documents
    
    ### What is the Jira issue?
    https://issues.apache.org/jira/browse/SUBMARINE-640
    
    ### How should this be tested?
    https://travis-ci.org/github/kevin85421/hadoop-submarine/builds/731153069
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: kevin85421 <b0...@ntu.edu.tw>
    
    Closes #416 from kevin85421/SUBMARINE-640 and squashes the following commits:
    
    27e70c7 [kevin85421] SUBMARINE-640. Remove workbench (vue)
---
 .gitignore                                         |     8 -
 .travis.yml                                        |    17 +-
 pom.xml                                            |     1 -
 submarine-dist/src/assembly/src-distribution.xml   |     3 -
 submarine-workbench/pom.xml                        |     1 -
 submarine-workbench/workbench-web/.editorconfig    |    39 -
 submarine-workbench/workbench-web/.env             |     3 -
 submarine-workbench/workbench-web/.env.preview     |     3 -
 submarine-workbench/workbench-web/.gitattributes   |     1 -
 submarine-workbench/workbench-web/.prettierrc      |     5 -
 submarine-workbench/workbench-web/LICENSE          |    21 -
 submarine-workbench/workbench-web/README.md        |    46 -
 submarine-workbench/workbench-web/README.zh-CN.md  |    50 -
 submarine-workbench/workbench-web/babel.config.js  |    21 -
 .../workbench-web/docs/add-page-loading-animate.md |    31 -
 .../workbench-web/docs/load-on-demand.md           |    95 -
 .../workbench-web/docs/multi-tabs.md               |    28 -
 .../workbench-web/docs/webpack-bundle-analyzer.md  |    40 -
 submarine-workbench/workbench-web/jest.config.js   |    23 -
 submarine-workbench/workbench-web/jsconfig.json    |    11 -
 submarine-workbench/workbench-web/package.json     |   138 -
 submarine-workbench/workbench-web/pom.xml          |   143 -
 .../workbench-web/public/assets/notebook_logo.png  |   Bin 8354 -> 0 bytes
 .../workbench-web/public/assets/python_logo.png    |   Bin 10836 -> 0 bytes
 .../workbench-web/public/assets/pytorch_logo.png   |   Bin 10316 -> 0 bytes
 .../workbench-web/public/assets/r_logo.png         |   Bin 8793 -> 0 bytes
 .../workbench-web/public/assets/scala_logo.png     |   Bin 10055 -> 0 bytes
 .../public/assets/tensorflow_logo.png              |   Bin 11126 -> 0 bytes
 .../workbench-web/public/avatar2.jpg               |   Bin 27756 -> 0 bytes
 .../workbench-web/public/color.less                |  7684 ------------
 .../workbench-web/public/index.html                |    24 -
 .../workbench-web/public/loading/loading.css       |     1 -
 .../workbench-web/public/loading/loading.html      |     1 -
 .../public/loading/option2/html_code_segment.html  |     5 -
 .../public/loading/option2/loading.css             |     1 -
 .../public/loading/option2/loading.svg             |     1 -
 submarine-workbench/workbench-web/public/logo.png  |   Bin 16547 -> 0 bytes
 submarine-workbench/workbench-web/src/App.vue      |    29 -
 .../workbench-web/src/WEB-INF/web.xml              |    45 -
 submarine-workbench/workbench-web/src/api/index.js |    12 -
 submarine-workbench/workbench-web/src/api/login.js |    61 -
 .../workbench-web/src/api/manage.js                |   107 -
 .../workbench-web/src/api/system.js                |    79 -
 .../workbench-web/src/api/workbench.js             |    87 -
 .../workbench-web/src/assets/background.svg        |    69 -
 .../workbench-web/src/assets/icons/bx-analyse.svg  |     1 -
 .../workbench-web/src/assets/logo-128.png          |   Bin 6098 -> 0 bytes
 .../workbench-web/src/assets/logo.png              |   Bin 20228 -> 0 bytes
 .../workbench-web/src/assets/logo.svg              |    29 -
 .../workbench-web/src/assets/submarine-logo.svg    |     1 -
 .../ArticleListContent/ArticleListContent.vue      |    89 -
 .../src/components/ArticleListContent/index.js     |     3 -
 .../src/components/AvatarList/Item.vue             |    46 -
 .../src/components/AvatarList/List.vue             |    99 -
 .../src/components/AvatarList/index.js             |     4 -
 .../src/components/AvatarList/index.less           |    60 -
 .../src/components/AvatarList/index.md             |    64 -
 .../workbench-web/src/components/Charts/Bar.vue    |    62 -
 .../src/components/Charts/ChartCard.vue            |   120 -
 .../workbench-web/src/components/Charts/Liquid.vue |    67 -
 .../src/components/Charts/MiniArea.vue             |    56 -
 .../src/components/Charts/MiniBar.vue              |    57 -
 .../src/components/Charts/MiniProgress.vue         |    75 -
 .../src/components/Charts/MiniSmoothArea.vue       |    40 -
 .../workbench-web/src/components/Charts/Radar.vue  |    68 -
 .../src/components/Charts/RankList.vue             |    77 -
 .../src/components/Charts/TagCloud.vue             |   113 -
 .../src/components/Charts/TransferBar.vue          |    64 -
 .../workbench-web/src/components/Charts/Trend.vue  |    82 -
 .../workbench-web/src/components/Charts/chart.less |    13 -
 .../src/components/Charts/smooth.area.less         |    14 -
 .../src/components/CountDown/CountDown.vue         |   102 -
 .../src/components/CountDown/index.js              |     3 -
 .../src/components/CountDown/index.md              |    34 -
 .../components/DescriptionList/DescriptionList.vue |   153 -
 .../src/components/DescriptionList/index.js        |     2 -
 .../src/components/Dict/DictSelectTag.vue          |   143 -
 .../workbench-web/src/components/Dict/README.md    |    11 -
 .../src/components/Dict/SearchSelect.vue           |   111 -
 .../workbench-web/src/components/Dict/index.js     |     2 -
 .../src/components/Editor/QuillEditor.vue          |    82 -
 .../src/components/Editor/WangEditor.vue           |    57 -
 .../src/components/Ellipsis/Ellipsis.vue           |    64 -
 .../workbench-web/src/components/Ellipsis/index.js |     3 -
 .../workbench-web/src/components/Ellipsis/index.md |    38 -
 .../src/components/Exception/ExceptionPage.vue     |   130 -
 .../src/components/Exception/index.js              |     2 -
 .../workbench-web/src/components/Exception/type.js |    19 -
 .../src/components/FooterToolbar/FooterToolBar.vue |    30 -
 .../src/components/FooterToolbar/index.js          |     4 -
 .../src/components/FooterToolbar/index.less        |    23 -
 .../src/components/FooterToolbar/index.md          |    48 -
 .../src/components/GlobalFooter/GlobalFooter.vue   |    54 -
 .../src/components/GlobalFooter/index.js           |     2 -
 .../src/components/GlobalHeader/GlobalHeader.vue   |   125 -
 .../src/components/GlobalHeader/index.js           |     2 -
 .../src/components/IconSelector/IconSelector.vue   |    86 -
 .../src/components/IconSelector/README.md          |    48 -
 .../src/components/IconSelector/icons.js           |    36 -
 .../src/components/IconSelector/index.js           |     2 -
 .../workbench-web/src/components/Menu/SideMenu.vue |    61 -
 .../workbench-web/src/components/Menu/index.js     |     2 -
 .../workbench-web/src/components/Menu/menu.js      |   180 -
 .../src/components/Menu/menu.render.js             |   156 -
 .../src/components/MultiTab/MultiTab.vue           |   175 -
 .../workbench-web/src/components/MultiTab/index.js |     4 -
 .../src/components/MultiTab/index.less             |    25 -
 .../src/components/NoticeIcon/NoticeIcon.vue       |    90 -
 .../src/components/NoticeIcon/index.js             |     2 -
 .../src/components/NumberInfo/NumberInfo.vue       |    54 -
 .../src/components/NumberInfo/index.js             |     3 -
 .../src/components/NumberInfo/index.less           |    55 -
 .../src/components/NumberInfo/index.md             |    43 -
 .../src/components/PageHeader/PageHeader.vue       |   202 -
 .../src/components/PageHeader/index.js             |     2 -
 .../src/components/PageLoading/index.jsx           |    10 -
 .../workbench-web/src/components/Result/Result.vue |   109 -
 .../workbench-web/src/components/Result/index.js   |     2 -
 .../src/components/SettingDrawer/SettingDrawer.vue |   354 -
 .../src/components/SettingDrawer/SettingItem.vue   |    38 -
 .../src/components/SettingDrawer/index.js          |     2 -
 .../src/components/SettingDrawer/settingConfig.js  |   105 -
 .../src/components/SettingDrawer/themeColor.js     |    23 -
 .../components/StandardFormRow/StandardFormRow.vue |   122 -
 .../src/components/StandardFormRow/index.js        |     3 -
 .../workbench-web/src/components/Table/README.md   |   341 -
 .../workbench-web/src/components/Table/index.js    |   316 -
 .../src/components/TagSelect/TagSelectOption.jsx   |    45 -
 .../src/components/TagSelect/index.jsx             |   103 -
 .../workbench-web/src/components/Tree/Tree.jsx     |   124 -
 .../workbench-web/src/components/Trend/Trend.vue   |    41 -
 .../workbench-web/src/components/Trend/index.js    |     3 -
 .../workbench-web/src/components/Trend/index.less  |    42 -
 .../workbench-web/src/components/Trend/index.md    |    45 -
 .../workbench-web/src/components/_util/util.js     |    46 -
 .../workbench-web/src/components/global.less       |   490 -
 .../workbench-web/src/components/index.js          |    62 -
 .../workbench-web/src/components/index.less        |     5 -
 .../src/components/tools/Breadcrumb.vue            |    45 -
 .../src/components/tools/DetailList.vue            |     5 -
 .../src/components/tools/HeadInfo.vue              |    67 -
 .../workbench-web/src/components/tools/Logo.vue    |    31 -
 .../src/components/tools/TwoStepCaptcha.vue        |    89 -
 .../src/components/tools/UserMenu.vue              |    79 -
 .../workbench-web/src/components/tools/index.js    |     0
 .../workbench-web/src/config/defaultSettings.js    |    33 -
 .../workbench-web/src/config/router.config.js      |   540 -
 .../workbench-web/src/core/bootstrap.js            |    34 -
 .../workbench-web/src/core/directives/action.js    |    34 -
 .../workbench-web/src/core/icons.js                |    11 -
 .../src/core/lazy_lib/components_use.js            |    99 -
 .../workbench-web/src/core/lazy_use.js             |    20 -
 submarine-workbench/workbench-web/src/core/use.js  |    25 -
 .../workbench-web/src/layouts/BasicLayout.vue      |   181 -
 .../workbench-web/src/layouts/BlankLayout.vue      |    16 -
 .../workbench-web/src/layouts/PageView.vue         |   181 -
 .../workbench-web/src/layouts/RouteView.vue        |    32 -
 .../workbench-web/src/layouts/UserLayout.vue       |   145 -
 .../workbench-web/src/layouts/index.js             |     7 -
 submarine-workbench/workbench-web/src/main.js      |    28 -
 .../workbench-web/src/mixins/ListMixin.js          |   288 -
 .../workbench-web/src/mock/index.js                |    20 -
 .../workbench-web/src/mock/services/article.js     |    89 -
 .../workbench-web/src/mock/services/auth.js        |    48 -
 .../workbench-web/src/mock/services/manage.js      |   252 -
 .../workbench-web/src/mock/services/other.js       |   974 --
 .../workbench-web/src/mock/services/tagCloud.js    |     9 -
 .../workbench-web/src/mock/services/user.js        |   373 -
 .../workbench-web/src/mock/services/workbench.js   |   545 -
 submarine-workbench/workbench-web/src/mock/util.js |    38 -
 .../workbench-web/src/permission.js                |    69 -
 .../workbench-web/src/router/README.md             |   145 -
 .../workbench-web/src/router/index.js              |    12 -
 .../workbench-web/src/store/getters.js             |    15 -
 .../workbench-web/src/store/index.js               |    27 -
 .../workbench-web/src/store/modules/app.js         |   122 -
 .../workbench-web/src/store/modules/permission.js  |    76 -
 .../workbench-web/src/store/modules/user.js        |   100 -
 .../workbench-web/src/store/mutation-types.js      |    16 -
 .../workbench-web/src/utils/axios.js               |    35 -
 .../workbench-web/src/utils/device.js              |    33 -
 .../workbench-web/src/utils/domUtil.js             |    19 -
 .../workbench-web/src/utils/filter.js              |    20 -
 .../workbench-web/src/utils/helper/permission.js   |    51 -
 .../workbench-web/src/utils/mixin.js               |    76 -
 .../workbench-web/src/utils/permissions.js         |     8 -
 .../workbench-web/src/utils/request.js             |    65 -
 .../workbench-web/src/utils/util.js                |    79 -
 .../workbench-web/src/utils/utils.less             |    50 -
 .../workbench-web/src/views/404.vue                |    15 -
 .../workbench-web/src/views/Home.vue               |   215 -
 .../src/views/account/center/Index.vue             |   288 -
 .../src/views/account/center/page/App.vue          |   113 -
 .../src/views/account/center/page/Article.vue      |    75 -
 .../src/views/account/center/page/Project.vue      |   109 -
 .../src/views/account/center/page/index.js         |     5 -
 .../src/views/account/settings/AvatarModal.vue     |   109 -
 .../src/views/account/settings/BaseSetting.vue     |   161 -
 .../src/views/account/settings/Binding.vue         |    25 -
 .../src/views/account/settings/Custom.vue          |    75 -
 .../src/views/account/settings/Index.vue           |   155 -
 .../src/views/account/settings/Notification.vue    |    25 -
 .../src/views/account/settings/Security.vue        |    41 -
 .../src/views/account/settings/Team.vue            |   372 -
 .../workbench-web/src/views/dashboard/Analysis.vue |   413 -
 .../workbench-web/src/views/dashboard/Monitor.vue  |    15 -
 .../src/views/dashboard/Workplace.vue              |   360 -
 .../workbench-web/src/views/exception/403.vue      |    17 -
 .../workbench-web/src/views/exception/404.vue      |    17 -
 .../workbench-web/src/views/exception/500.vue      |    17 -
 .../workbench-web/src/views/form/BasicForm.vue     |   138 -
 .../src/views/form/advancedForm/AdvancedForm.vue   |   334 -
 .../src/views/form/advancedForm/RepositoryForm.vue |   119 -
 .../src/views/form/advancedForm/TaskForm.vue       |   107 -
 .../src/views/form/stepForm/Step1.vue              |   112 -
 .../src/views/form/stepForm/Step2.vue              |   110 -
 .../src/views/form/stepForm/Step3.vue              |    69 -
 .../src/views/form/stepForm/StepForm.vue           |    62 -
 .../workbench-web/src/views/list/CardList.vue      |   109 -
 .../workbench-web/src/views/list/QueryList.vue     |    50 -
 .../workbench-web/src/views/list/StandardList.vue  |   167 -
 .../workbench-web/src/views/list/TableList.vue     |   280 -
 .../src/views/list/modules/CreateForm.vue          |    67 -
 .../src/views/list/modules/StepByStepModal.vue     |   172 -
 .../src/views/list/modules/TaskForm.vue            |    79 -
 .../src/views/list/search/Applications.vue         |   186 -
 .../src/views/list/search/Article.vue              |   185 -
 .../src/views/list/search/Projects.vue             |   168 -
 .../src/views/list/search/SearchLayout.vue         |    78 -
 .../src/views/list/search/components/CardInfo.vue  |    58 -
 .../src/views/list/search/components/IconText.vue  |    22 -
 .../workbench-web/src/views/list/table/Edit.vue    |   160 -
 .../workbench-web/src/views/list/table/List.vue    |   240 -
 .../src/views/other/IconSelectorView.vue           |    36 -
 .../src/views/other/PermissionList.vue             |   272 -
 .../workbench-web/src/views/other/RoleList.vue     |   182 -
 .../src/views/other/TableInnerEditList.vue         |   268 -
 .../workbench-web/src/views/other/TreeList.vue     |   192 -
 .../workbench-web/src/views/other/UserList.vue     |   265 -
 .../src/views/other/modules/OrgModal.vue           |   100 -
 .../src/views/other/modules/RoleModal.vue          |   147 -
 .../src/views/profile/advanced/Advanced.vue        |   343 -
 .../src/views/profile/basic/Index.vue              |   255 -
 .../workbench-web/src/views/result/Error.vue       |    45 -
 .../workbench-web/src/views/result/Success.vue     |    92 -
 .../workbench-web/src/views/role/RoleList.vue      |   169 -
 .../workbench-web/src/views/system/DeptList.vue    |   186 -
 .../src/views/system/DictItemList.vue              |   208 -
 .../workbench-web/src/views/system/DictList.vue    |   178 -
 .../workbench-web/src/views/system/UserList.vue    |   269 -
 .../src/views/system/modules/DeptModal.vue         |   295 -
 .../src/views/system/modules/DictItemModal.vue     |   196 -
 .../src/views/system/modules/DictModal.vue         |   154 -
 .../src/views/system/modules/PasswordModal.vue     |   150 -
 .../src/views/system/modules/UserModal.vue         |   415 -
 .../workbench-web/src/views/user/Login.vue         |   274 -
 .../workbench-web/src/views/user/Register.vue      |   322 -
 .../src/views/user/RegisterResult.vue              |    50 -
 .../workbench-web/src/views/workbench/Home.vue     |   347 -
 .../src/views/workbench/actuator/Actuator.vue      |   242 -
 .../workbench/actuator/modules/CreateActuator.vue  |   172 -
 .../workbench/actuator/modules/CreateForm.vue      |    67 -
 .../views/workbench/actuator/modules/TaskForm.vue  |    79 -
 .../src/views/workbench/data/Data.vue              |   405 -
 .../src/views/workbench/data/NewTable.vue          |   134 -
 .../src/views/workbench/data/Step1.vue             |   191 -
 .../src/views/workbench/data/Step2.vue             |   231 -
 .../src/views/workbench/data/Step3.vue             |   104 -
 .../workbench-web/src/views/workbench/job/Job.vue  |   205 -
 .../src/views/workbench/job/modules/CreateJob.vue  |   183 -
 .../src/views/workbench/workspace/Index.vue        |   241 -
 .../src/views/workbench/workspace/Release.vue      |   214 -
 .../src/views/workbench/workspace/Shared.vue       |   193 -
 .../src/views/workbench/workspace/Team.vue         |   111 -
 .../src/views/workbench/workspace/Training.vue     |   183 -
 .../views/workbench/workspace/WorkspaceLayout.vue  |   105 -
 .../views/workbench/workspace/project/Index.vue    |    38 -
 .../src/views/workbench/workspace/project/List.vue |   277 -
 .../workbench/workspace/project/NewProject.vue     |   152 -
 .../workspace/project/NewProjectStep1.vue          |   199 -
 .../workspace/project/NewProjectStep2.vue          |   334 -
 .../workspace/project/NewProjectStep3.vue          |   194 -
 .../workbench/workspace/project/ProjectList.vue    |   248 -
 .../workbench-web/tests/unit/.eslintrc.js          |     5 -
 submarine-workbench/workbench-web/vue.config.js    |   125 -
 .../workbench-web/webstorm.config.js               |    16 -
 submarine-workbench/workbench-web/yarn.lock        | 11533 -------------------
 287 files changed, 1 insertion(+), 47779 deletions(-)

diff --git a/.gitignore b/.gitignore
index 96e589b..5fc487f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,14 +59,6 @@ venv.bak/
 target
 dev-support/mini-submarine/database
 dev-support/pysubmarine/sdk
-submarine-workbench/workbench-web/node
-submarine-workbench/workbench-web/node_modules
-submarine-workbench/workbench-web/dist
-submarine-workbench/workbench-web/.env.local
-submarine-workbench/workbench-web/.env.*.local
-submarine-workbench/workbench-web/npm-debug.log*
-submarine-workbench/workbench-web/yarn-debug.log*
-submarine-workbench/workbench-web/yarn-error.log*
 submarine-workbench/workbench-web-ng/node
 submarine-workbench/workbench-web-ng/node_modules
 submarine-workbench/workbench-web-ng/dist
diff --git a/.travis.yml b/.travis.yml
index eeae5a9..1b7200f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,8 +22,6 @@ cache:
   apt: true
   directories:
     - ${HOME}/.m2
-    - submarine-workbench/workbench-web/node
-    - submarine-workbench/workbench-web/node_modules
     - submarine-workbench/workbench-web-ng/node
     - submarine-workbench/workbench-web-ng/node_modules
 
@@ -48,7 +46,7 @@ env:
     - EXCLUDE_SERVER="!:submarine-server-api,!:submarine-server-core,!:submarine-server-rpc"
     - EXCLUDE_CLIENT="!:submarine-client"
     - EXCLUDE_ALL="!:submarine-all"
-    - EXCLUDE_WORKBENCH="!:submarine-workbench,!:submarine-workbench-web,!:submarine-workbench-web-ng"
+    - EXCLUDE_WORKBENCH="!:submarine-workbench,!:submarine-workbench-web-ng"
     - EXCLUDE_INTERPRETER="!:submarine-interpreter,!:submarine-interpreter-core,!:submarine-python-interpreter,!:submarine-spark-interpreter"
     - EXCLUDE_SUBMITTER_K8S="!:submarine-submitter-k8s"
     - EXCLUDE_SUBMITTER_YARN="!:submarine-submitter-yarn"
@@ -232,19 +230,6 @@ matrix:
       dist: xenial
       env: PYTHON="3" PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests -am" TEST_FLAG="test -DskipRat -am" MODULES="-pl $(echo ${EXCLUDE_INTERPRETER} | sed 's/!//g')" TEST_MODULES="-pl $(echo ${EXCLUDE_INTERPRETER} | sed 's/!//g')" TEST_PROJECTS=""
 
-    - name: Test submarine workbench-web VUE
-      language: node_js
-      node_js:
-        - 10.15.0
-      before_install:
-        - cd submarine-workbench/workbench-web
-      install:
-        - yarn install
-      script:
-        - yarn
-        - yarn run lint --no-fix && yarn run build
-      env: NAME="Build workbench-web"
-
     - name: Test submarine workbench-web Angular
       language: node_js
       node_js:
diff --git a/pom.xml b/pom.xml
index 6e521e3..b14626a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -566,7 +566,6 @@
             <exclude>NOTICE-binary</exclude>
             <exclude>**/go.mod</exclude>
             <exclude>**/go.sum</exclude>
-            <exclude>**/workbench-web/**</exclude>
             <exclude>**/*.ipynb</exclude>
           </excludes>
         </configuration>
diff --git a/submarine-dist/src/assembly/src-distribution.xml b/submarine-dist/src/assembly/src-distribution.xml
index 9266a5e..6099d94 100644
--- a/submarine-dist/src/assembly/src-distribution.xml
+++ b/submarine-dist/src/assembly/src-distribution.xml
@@ -37,9 +37,6 @@
         <exclude>**/.settings</exclude>
         <exclude>**/target/**</exclude>
         <exclude>submodules/**/target/**</exclude>
-        <exclude>submarine-workbench/workbench-web/dist/**</exclude>
-        <exclude>submarine-workbench/workbench-web/node_modules/**</exclude>
-        <exclude>submarine-workbench/workbench-web/node/**</exclude>
         <exclude>submarine-workbench/workbench-web-ng/dist/**</exclude>
         <exclude>submarine-workbench/workbench-web-ng/node_modules/**</exclude>
         <!-- until the code that does this is fixed -->
diff --git a/submarine-workbench/pom.xml b/submarine-workbench/pom.xml
index 07d0ed8..15f32d6 100644
--- a/submarine-workbench/pom.xml
+++ b/submarine-workbench/pom.xml
@@ -38,7 +38,6 @@
 
   <modules>
     <module>interpreter</module>
-    <module>workbench-web</module>
     <module>workbench-web-ng</module>
   </modules>
 
diff --git a/submarine-workbench/workbench-web/.editorconfig b/submarine-workbench/workbench-web/.editorconfig
deleted file mode 100644
index 6f77dff..0000000
--- a/submarine-workbench/workbench-web/.editorconfig
+++ /dev/null
@@ -1,39 +0,0 @@
-[*]
-charset=utf-8
-end_of_line=lf
-insert_final_newline=false
-indent_style=space
-indent_size=2
-
-[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}]
-indent_style=space
-indent_size=2
-
-[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}]
-indent_style=space
-indent_size=2
-
-[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}]
-indent_style=space
-indent_size=2
-
-[*.svg]
-indent_style=space
-indent_size=2
-
-[*.js.map]
-indent_style=space
-indent_size=2
-
-[*.less]
-indent_style=space
-indent_size=2
-
-[*.vue]
-indent_style=space
-indent_size=2
-
-[{.analysis_options,*.yml,*.yaml}]
-indent_style=space
-indent_size=2
-
diff --git a/submarine-workbench/workbench-web/.env b/submarine-workbench/workbench-web/.env
deleted file mode 100644
index b5c472a..0000000
--- a/submarine-workbench/workbench-web/.env
+++ /dev/null
@@ -1,3 +0,0 @@
-NODE_ENV=production
-VUE_APP_PREVIEW=false
-VUE_APP_API_BASE_URL=/api
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/.env.preview b/submarine-workbench/workbench-web/.env.preview
deleted file mode 100644
index a9e44c8..0000000
--- a/submarine-workbench/workbench-web/.env.preview
+++ /dev/null
@@ -1,3 +0,0 @@
-NODE_ENV=production
-VUE_APP_PREVIEW=true
-VUE_APP_API_BASE_URL=/api
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/.gitattributes b/submarine-workbench/workbench-web/.gitattributes
deleted file mode 100644
index e507319..0000000
--- a/submarine-workbench/workbench-web/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-public/* linguist-vendored
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/.prettierrc b/submarine-workbench/workbench-web/.prettierrc
deleted file mode 100644
index cbe842a..0000000
--- a/submarine-workbench/workbench-web/.prettierrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "printWidth": 120,
-  "semi": false,
-  "singleQuote": true
-}
diff --git a/submarine-workbench/workbench-web/LICENSE b/submarine-workbench/workbench-web/LICENSE
deleted file mode 100644
index 66eef0b..0000000
--- a/submarine-workbench/workbench-web/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 Anan Yang
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/README.md b/submarine-workbench/workbench-web/README.md
deleted file mode 100644
index 3d41e78..0000000
--- a/submarine-workbench/workbench-web/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-English | [简体中文](./README.zh-CN.md)
-
-<h1 align="center">Submarine Workbench Web</h1>
-### Env and dependencies
-
-- node
-- yarn
-- webpack
-- eslint
-- @vue/cli ~3
-- [ant-design-vue](https://github.com/vueComponent/ant-design-vue) - Ant Design Of Vue 
-- [vue-cropper](https://github.com/xyxiao001/vue-cropper) - Picture edit
-- [@antv/g2](https://antv.alipay.com/zh-cn/index.html) - AntV G2
-- [Viser-vue](https://viserjs.github.io/docs.html#/viser/guide/installation)  - Antv/G2 of Vue
-
-> Note:  [Yarn](https://yarnpkg.com/) package management is recommended, the exact same version loaded with the demo site of this project (yarn.lock) . but you can also use npm
-
-
-### Project setup
-
-- Clone repo
-```bash
-git https://github.com/hadoopsubmarine/submarine.git
-cd submarine/submarine-workbench/workbench-web
-```
-
-- Install dependencies
-```
-yarn install
-```
-
-- Compiles and hot-reloads for development
-```
-yarn run serve
-```
-
-- Compiles and minifies for production
-```
-yarn run build
-```
-
-- Lints and fixes files
-```
-yarn run lint
-```
-
diff --git a/submarine-workbench/workbench-web/README.zh-CN.md b/submarine-workbench/workbench-web/README.zh-CN.md
deleted file mode 100644
index d00d460..0000000
--- a/submarine-workbench/workbench-web/README.zh-CN.md
+++ /dev/null
@@ -1,50 +0,0 @@
-[English](./README.md) | 简体中文
-
-<h1 align="center">Submarine Workbench</h1>
-
-
-环境和依赖
-----
-
-- node
-- yarn
-- webpack
-- eslint
-- @vue/cli ~3
-- [ant-design-vue](https://github.com/vueComponent/ant-design-vue) - Ant Design Of Vue 实现
-- [vue-cropper](https://github.com/xyxiao001/vue-cropper) - 头像裁剪组件
-- [@antv/g2](https://antv.alipay.com/zh-cn/index.html) - Alipay AntV 数据可视化图表
-- [Viser-vue](https://viserjs.github.io/docs.html#/viser/guide/installation)  - antv/g2 封装实现
-
-> 请注意,我们强烈建议本项目使用 [Yarn](https://yarnpkg.com/) 包管理工具,这样可以与本项目演示站所加载完全相同的依赖版本 (yarn.lock) 。由于我们没有对依赖进行强制的版本控制,采用非 yarn 包管理进行引入时,可能由于 Pro 所依赖的库已经升级版本而引入了新版本所导致的问题。作者可能会由于时间问题无法及时排查而导致您采用本项目作为基项目而出现问题。
-
-
-
-项目下载和运行
-----
-
-- 拉取项目代码
-```bash
-git https://github.com/hadoopsubmarine/submarine.git
-cd submarine/submarine-workbench/workbench-web
-```
-
-- 安装依赖
-```
-yarn install
-```
-
-- 开发模式运行
-```
-yarn run serve
-```
-
-- 编译项目
-```
-yarn run build
-```
-
-- Lints and fixes files
-```
-yarn run lint
-```
diff --git a/submarine-workbench/workbench-web/babel.config.js b/submarine-workbench/workbench-web/babel.config.js
deleted file mode 100644
index 1a0ebb8..0000000
--- a/submarine-workbench/workbench-web/babel.config.js
+++ /dev/null
@@ -1,21 +0,0 @@
-module.exports = {
-  presets: [
-    '@vue/app',
-    [
-      '@babel/preset-env',
-      {
-        'corejs': '2.6.5',
-        'useBuiltIns': 'entry'
-      }
-    ]
-  ]
-  // if your use import on Demand, Use this code
-  // ,
-  // plugins: [
-  //   [ 'import', {
-  //     'libraryName': 'ant-design-vue',
-  //     'libraryDirectory': 'es',
-  //     'style': true // `style: true` 会加载 less 文件
-  //   } ]
-  // ]
-}
diff --git a/submarine-workbench/workbench-web/docs/add-page-loading-animate.md b/submarine-workbench/workbench-web/docs/add-page-loading-animate.md
deleted file mode 100644
index dfe4919..0000000
--- a/submarine-workbench/workbench-web/docs/add-page-loading-animate.md
+++ /dev/null
@@ -1,31 +0,0 @@
-为首屏增加 加载动画
-====
-
-
-
-## 需求
-
-> 为了缓解用户第一次访问时,加载 JS 过大所导致用户等待白屏时间过长导致的用户体验不好,进行的一个优化动效。
-
-
-
-## 实现方案
-
-1. 将 动画加载 dom 元素放在 #app 内,Vue 生命周期开始时,会自动清掉 #app 下的所有元素。
-2. 将 动画加载 dom 元素放在 body 下,Vue 生命周期开始时 App.vue (created, mounted) 调用 `@/utils/utll` 下的 removeLoadingAnimate(#id, timeout) 则会移除加载动画
-
-最后一步:
-​	将样式插入到 `public/index.html` 文件的 `<head></head>` 最好写成内联 `<style>动画样式</style>` 
-
-
-
-----
-
-目前提供有两个样式,均在 `public/loading` 文件夹内。且 pro 已经默认使用了一套 loading 动画方案,可以直接参考 `public/index.html`
-
-
-## 写在最后
-
-目前 pro 有页面 overflow 显示出浏览器滚动条时,页面会抖动一下的问题。
-
-欢迎各位提供能解决的方案和实现 demo。如果在条件允许的情况下,建议请直接使用 pro 进行改造,也欢迎直接 PR 到 pro 的仓库
diff --git a/submarine-workbench/workbench-web/docs/load-on-demand.md b/submarine-workbench/workbench-web/docs/load-on-demand.md
deleted file mode 100644
index c920caa..0000000
--- a/submarine-workbench/workbench-web/docs/load-on-demand.md
+++ /dev/null
@@ -1,95 +0,0 @@
-按需加载 减小打包
-====
-
-
-
-## 按需引入组件依赖
-
-`Ant Design Pro Vue` 默认编码工作并不支持按需引入,不过可以通过以下操作结合 [Ant Design Of Vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/) 官方文档来进行按需引入。
-
-- 增加项目按需引入依赖
-- 修改引入组件方式
-
-
-
-1. 增加按需引入所需依赖  `babel-plugin-import` 
-并且修改文件 `babel.config.js` 
-   ```ecmascript 6
-   module.exports = {
-     presets: [
-       '@vue/app'
-     ],
-     plugins: [
-       [ "import", {
-         "libraryName": "ant-design-vue",
-         "libraryDirectory": "es",
-         "style": "css"
-       } ]
-     ]
-   }
-   ```
-
-
-2. 修改引入组件方式 (注意,这只是一个例子,请完整引入你所需要的组件)
-
-   文件 `@/core/lazy_lib/component_use.js`
-
-   ```javascript
-   import Vue from 'vue'
-   import {
-       Input, 
-       Button, 
-       Select, 
-       Card, 
-       Form, 
-       Row, 
-       Col, 
-       Modal, 
-       Table, 
-       notification
-   } from 'ant-design-vue'
-   
-   Vue.use(Input)
-   Vue.use(Button)
-   Vue.use(Select)
-   Vue.use(Card)
-   Vue.use(Form)
-   Vue.use(Row)
-   Vue.use(Col)
-   Vue.use(Modal)
-   Vue.use(Table)
-   Vue.use(notification)
-   
-   Vue.prototype.$notification = notification;
-   ```
-
-
-3. 最后在 `main.js` 中引入 `@/core/lazy_use.js` 文件即可,如下
-
-   ```javascript
-   
-   import Vue from 'vue'
-   import App from './App'
-   
-   // 引入 按需组件的统一引入文件
-   import './core/lazy_use'
-   
-   import './style/index.less'
-   
-   
-   Vue.config.productionTip = false
-   
-   new Vue({
-     render: h => h(App),
-   }).$mount('#app')
-
-   ```
-
-
-
-## 其他 减少打包大小
-
-
-
-1.   Ant Design Vue 1.2.x 版本起,采用的 ant-design 官方方案 svg Icon 组件,整个项目打包会变大很多,图标进行按需加载可参考 https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo
-2. moment 按需加载 可参考 https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
diff --git a/submarine-workbench/workbench-web/docs/multi-tabs.md b/submarine-workbench/workbench-web/docs/multi-tabs.md
deleted file mode 100644
index 94032f0..0000000
--- a/submarine-workbench/workbench-web/docs/multi-tabs.md
+++ /dev/null
@@ -1,28 +0,0 @@
-多(页签)标签 模式
-====
-
-
-## 让框架支持打开的页面增加多标签,可随时切换
-
-### 关于如何移除该功能 组件
-  1. 移除 `/src/layouts/BasicLayout.vue` L44, L69, L80
-      ```vue
-      // L44
-      <multi-tab v-if="multiTab"></multi-tab>
-      
-      // L69
-      import MultiTab from '@/components/MultiTab'
-      
-      // L80
-      MultiTab,
-      ```
-  2. 移除 `/src/config/defaultSettings.js` L25
-
-  3. 移除 `src/store/modules/app.js` L27, L76-L79, L118-L120
-  
-  4. 移除 `src/utils/mixin.js` L21
-  
-  5. 删除组件目录 `src/components/MultiTab` 
-
-> 以上 `L x` 均代表行N ,如 L3 = 行3 
-
diff --git a/submarine-workbench/workbench-web/docs/webpack-bundle-analyzer.md b/submarine-workbench/workbench-web/docs/webpack-bundle-analyzer.md
deleted file mode 100644
index c313767..0000000
--- a/submarine-workbench/workbench-web/docs/webpack-bundle-analyzer.md
+++ /dev/null
@@ -1,40 +0,0 @@
-先增加依赖
-
-```bash
-// npm
-$ npm install --save-dev webpack-bundle-analyzer
-
-// or yarn
-$ yarn add webpack-bundle-analyzer -D
-```
-
-配置文件 `vue.config.js` 增加 `configureWebpack.plugins` 参数
-
-```
-const path = require('path')
-const webpack = require('webpack')
-const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
-
-function resolve (dir) {
-  return path.join(__dirname, dir)
-}
-
-// vue.config.js
-module.exports = {
-  configureWebpack: {
-    plugins: [
-      // Ignore all locale files of moment.js
-      new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
-      // 依赖大小分析工具
-      new BundleAnalyzerPlugin(),
-    ]
-  },
-  
-  
-  ...
-}
-```
-
-
-
-启动 `cli` 的 `build` 命令进行项目编译,编译完成时,会自动运行一个 http://localhost:8888 的地址,完整显示了支持库依赖
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/jest.config.js b/submarine-workbench/workbench-web/jest.config.js
deleted file mode 100644
index 29fee32..0000000
--- a/submarine-workbench/workbench-web/jest.config.js
+++ /dev/null
@@ -1,23 +0,0 @@
-module.exports = {
-  moduleFileExtensions: [
-    'js',
-    'jsx',
-    'json',
-    'vue'
-  ],
-  transform: {
-    '^.+\\.vue$': 'vue-jest',
-    '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
-    '^.+\\.jsx?$': 'babel-jest'
-  },
-  moduleNameMapper: {
-    '^@/(.*)$': '<rootDir>/src/$1'
-  },
-  snapshotSerializers: [
-    'jest-serializer-vue'
-  ],
-  testMatch: [
-    '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
-  ],
-  testURL: 'http://localhost/'
-}
diff --git a/submarine-workbench/workbench-web/jsconfig.json b/submarine-workbench/workbench-web/jsconfig.json
deleted file mode 100644
index 1bd0da4..0000000
--- a/submarine-workbench/workbench-web/jsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "compilerOptions": {
-    "target": "es6",
-    "baseUrl": ".",
-    "paths": {
-      "@/*": ["src/*"]
-    }
-  },
-  "exclude": ["node_modules", "dist"],
-  "include": ["src/**/*"]
-}
diff --git a/submarine-workbench/workbench-web/package.json b/submarine-workbench/workbench-web/package.json
deleted file mode 100644
index a4def35..0000000
--- a/submarine-workbench/workbench-web/package.json
+++ /dev/null
@@ -1,138 +0,0 @@
-{
-  "name": "vue-antd-pro",
-  "version": "2.0.0",
-  "private": true,
-  "scripts": {
-    "serve": "vue-cli-service serve",
-    "build": "vue-cli-service build",
-    "build:preview": "vue-cli-service build --mode preview",
-    "lint": "vue-cli-service lint",
-    "lint:nofix": "vue-cli-service lint --no-fix",
-    "test:unit": "vue-cli-service test:unit",
-    "postinstall": "opencollective-postinstall"
-  },
-  "dependencies": {
-    "@antv/data-set": "^0.10.1",
-    "ant-design-vue": "~1.3.9",
-    "axios": "^0.19.0",
-    "core-js": "^2.6.5",
-    "enquire.js": "^2.1.6",
-    "js-cookie": "^2.2.0",
-    "lodash.get": "^4.4.2",
-    "lodash.pick": "^4.4.0",
-    "md5": "^2.2.1",
-    "mockjs2": "^1.0.5",
-    "moment": "^2.24.0",
-    "nprogress": "^0.2.0",
-    "reqwest": "^2.0.5",
-    "viser-vue": "^2.3.3",
-    "vue": "^2.5.22",
-    "vue-clipboard2": "^0.2.1",
-    "vue-cropper": "0.4.4",
-    "vue-ls": "^3.2.0",
-    "vue-quill-editor": "^3.0.6",
-    "vue-router": "^3.0.1",
-    "vue-svg-component-runtime": "^1.0.1",
-    "vuex": "^3.1.0",
-    "wangeditor": "^3.1.1"
-  },
-  "devDependencies": {
-    "@ant-design/colors": "^3.1.0",
-    "@babel/polyfill": "^7.2.5",
-    "@vue/cli-plugin-babel": "^3.7.0",
-    "@vue/cli-plugin-eslint": "^3.7.0",
-    "@vue/cli-plugin-unit-jest": "^3.7.0",
-    "@vue/cli-service": "^3.7.0",
-    "@vue/eslint-config-standard": "^4.0.0",
-    "@vue/test-utils": "^1.0.0-beta.20",
-    "babel-core": "7.0.0-bridge.0",
-    "babel-eslint": "^10.0.1",
-    "babel-jest": "^23.6.0",
-    "babel-plugin-import": "^1.11.0",
-    "eslint": "^5.8.0",
-    "eslint-plugin-html": "^5.0.0",
-    "eslint-plugin-vue": "^5.0.0",
-    "less": "^3.8.1",
-    "less-loader": "^4.1.0",
-    "opencollective": "^1.0.3",
-    "opencollective-postinstall": "^2.0.2",
-    "vue-svg-icon-loader": "^2.1.1",
-    "vue-template-compiler": "^2.5.22",
-    "webpack-theme-color-replacer": "^1.2.15"
-  },
-  "eslintConfig": {
-    "root": true,
-    "env": {
-      "node": true
-    },
-    "extends": [
-      "plugin:vue/strongly-recommended",
-      "@vue/standard"
-    ],
-    "parserOptions": {
-      "parser": "babel-eslint"
-    },
-    "rules": {
-      "generator-star-spacing": "off",
-      "no-mixed-operators": 0,
-      "vue/max-attributes-per-line": [
-        2,
-        {
-          "singleline": 5,
-          "multiline": {
-            "max": 1,
-            "allowFirstLine": false
-          }
-        }
-      ],
-      "vue/attribute-hyphenation": 0,
-      "vue/html-self-closing": 0,
-      "vue/component-name-in-template-casing": 0,
-      "vue/html-closing-bracket-spacing": 0,
-      "vue/singleline-html-element-content-newline": 0,
-      "vue/no-unused-components": 0,
-      "vue/multiline-html-element-content-newline": 0,
-      "vue/no-use-v-if-with-v-for": 0,
-      "vue/html-closing-bracket-newline": 0,
-      "vue/no-parsing-error": 0,
-      "no-console": 0,
-      "no-tabs": 0,
-      "quotes": [
-        2,
-        "single",
-        {
-          "avoidEscape": true,
-          "allowTemplateLiterals": true
-        }
-      ],
-      "semi": [
-        2,
-        "never",
-        {
-          "beforeStatementContinuationChars": "never"
-        }
-      ],
-      "no-delete-var": 2,
-      "prefer-const": [
-        2,
-        {
-          "ignoreReadBeforeAssign": false
-        }
-      ]
-    }
-  },
-  "postcss": {
-    "plugins": {
-      "autoprefixer": {}
-    }
-  },
-  "browserslist": [
-    "> 1%",
-    "last 2 versions",
-    "not ie <= 10"
-  ],
-  "collective": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/ant-design-pro-vue"
-  }
-}
diff --git a/submarine-workbench/workbench-web/pom.xml b/submarine-workbench/workbench-web/pom.xml
deleted file mode 100644
index ac304f2..0000000
--- a/submarine-workbench/workbench-web/pom.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You 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.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.submarine</groupId>
-    <artifactId>submarine-workbench</artifactId>
-    <version>0.5.0-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.submarine</groupId>
-  <artifactId>submarine-workbench-web</artifactId>
-  <packaging>war</packaging>
-  <version>0.5.0-SNAPSHOT</version>
-  <name>Submarine: Workbench Web</name>
-
-  <!-- See https://github.com/eirslett/frontend-maven-plugin/issues/229 -->
-  <prerequisites>
-    <maven>3.1.0</maven>
-  </prerequisites>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-
-    <!--plugin versions-->
-    <plugin.frontend.nodeDownloadRoot>https://nodejs.org/dist/</plugin.frontend.nodeDownloadRoot>
-  </properties>
-
-  <build>
-    <plugins>
-      <!-- Gulp Frontend -->
-      <plugin>
-        <groupId>com.github.eirslett</groupId>
-        <artifactId>frontend-maven-plugin</artifactId>
-        <version>${plugin.frontend.version}</version>
-
-        <configuration>
-          <!--workingDirectory>src/main/frontend</workingDirectory-->
-          <environmentVariables>
-            <!-- Avoid certificates issues, needed behind a corporate proxy -->
-            <NODE_TLS_REJECT_UNAUTHORIZED>0</NODE_TLS_REJECT_UNAUTHORIZED>
-          </environmentVariables>
-        </configuration>
-
-        <executions>
-          <execution>
-            <id>install node and yarn</id>
-            <goals>
-              <goal>install-node-and-yarn</goal>
-            </goals>
-            <configuration>
-              <nodeVersion>${node.version}</nodeVersion>
-              <yarnVersion>${yarn.version}</yarnVersion>
-            </configuration>
-          </execution>
-
-          <execution>
-            <id>yarn install</id>
-            <goals>
-              <goal>yarn</goal>
-            </goals>
-            <configuration>
-              <arguments>install --dist-url="${plugin.frontend.nodeDownloadRoot}"</arguments>
-            </configuration>
-          </execution>
-
-          <execution>
-            <id>yarn build</id>
-            <goals>
-              <goal>yarn</goal>
-            </goals>
-            <configuration>
-              <arguments>run build</arguments>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <!-- End Gulp Frontend -->
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-war-plugin</artifactId>
-        <version>${plugin.war.version}</version>
-        <configuration>
-          <warName>${project.artifactId}</warName>
-          <failOnMissingWebXml>true</failOnMissingWebXml>
-          <warSourceDirectory>dist</warSourceDirectory>
-          <webXml>src/WEB-INF/web.xml</webXml>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <!-- clean task will be executed by front-end-maven plugin -->
-        <artifactId>maven-clean-plugin</artifactId>
-        <configuration>
-          <filesets>
-            <fileset>
-              <directory>dist</directory>
-            </fileset>
-            <fileset>
-              <directory>node_modules</directory>
-            </fileset>
-            <fileset>
-              <directory>target</directory>
-            </fileset>
-            <fileset>
-              <directory>node</directory>
-            </fileset>
-          </filesets>
-        </configuration>
-
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/submarine-workbench/workbench-web/public/assets/notebook_logo.png b/submarine-workbench/workbench-web/public/assets/notebook_logo.png
deleted file mode 100644
index 430455b..0000000
Binary files a/submarine-workbench/workbench-web/public/assets/notebook_logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/public/assets/python_logo.png b/submarine-workbench/workbench-web/public/assets/python_logo.png
deleted file mode 100644
index 24d3c09..0000000
Binary files a/submarine-workbench/workbench-web/public/assets/python_logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/public/assets/pytorch_logo.png b/submarine-workbench/workbench-web/public/assets/pytorch_logo.png
deleted file mode 100644
index 483eb72..0000000
Binary files a/submarine-workbench/workbench-web/public/assets/pytorch_logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/public/assets/r_logo.png b/submarine-workbench/workbench-web/public/assets/r_logo.png
deleted file mode 100644
index bcbbcfb..0000000
Binary files a/submarine-workbench/workbench-web/public/assets/r_logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/public/assets/scala_logo.png b/submarine-workbench/workbench-web/public/assets/scala_logo.png
deleted file mode 100644
index 3117e79..0000000
Binary files a/submarine-workbench/workbench-web/public/assets/scala_logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/public/assets/tensorflow_logo.png b/submarine-workbench/workbench-web/public/assets/tensorflow_logo.png
deleted file mode 100644
index 042d8fe..0000000
Binary files a/submarine-workbench/workbench-web/public/assets/tensorflow_logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/public/avatar2.jpg b/submarine-workbench/workbench-web/public/avatar2.jpg
deleted file mode 100644
index 68cc6ba..0000000
Binary files a/submarine-workbench/workbench-web/public/avatar2.jpg and /dev/null differ
diff --git a/submarine-workbench/workbench-web/public/color.less b/submarine-workbench/workbench-web/public/color.less
deleted file mode 100644
index 0b0aa82..0000000
--- a/submarine-workbench/workbench-web/public/color.less
+++ /dev/null
@@ -1,7684 +0,0 @@
-@primary-color: #1890ff;
-/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
-/* stylelint-disable no-duplicate-selectors */
-/* stylelint-disable */
-.bezierEasingMixin() {
-  @functions: ~`(function() {
-  var NEWTON_ITERATIONS = 4;
-  var NEWTON_MIN_SLOPE = 0.001;
-  var SUBDIVISION_PRECISION = 0.0000001;
-  var SUBDIVISION_MAX_ITERATIONS = 10;
-
-  var kSplineTableSize = 11;
-  var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
-
-  var float32ArraySupported = typeof Float32Array === 'function';
-
-  function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
-  function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
-  function C (aA1)      { return 3.0 * aA1; }
-
-  // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
-  function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
-
-  // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
-  function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
-
-  function binarySubdivide (aX, aA, aB, mX1, mX2) {
-    var currentX, currentT, i = 0;
-    do {
-      currentT = aA + (aB - aA) / 2.0;
-      currentX = calcBezier(currentT, mX1, mX2) - aX;
-      if (currentX > 0.0) {
-        aB = currentT;
-      } else {
-        aA = currentT;
-      }
-    } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
-    return currentT;
-  }
-
-  function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
-   for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
-     var currentSlope = getSlope(aGuessT, mX1, mX2);
-     if (currentSlope === 0.0) {
-       return aGuessT;
-     }
-     var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
-     aGuessT -= currentX / currentSlope;
-   }
-   return aGuessT;
-  }
-
-  var BezierEasing = function (mX1, mY1, mX2, mY2) {
-    if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
-      throw new Error('bezier x values must be in [0, 1] range');
-    }
-
-    // Precompute samples table
-    var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
-    if (mX1 !== mY1 || mX2 !== mY2) {
-      for (var i = 0; i < kSplineTableSize; ++i) {
-        sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
-      }
-    }
-
-    function getTForX (aX) {
-      var intervalStart = 0.0;
-      var currentSample = 1;
-      var lastSample = kSplineTableSize - 1;
-
-      for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
-        intervalStart += kSampleStepSize;
-      }
-      --currentSample;
-
-      // Interpolate to provide an initial guess for t
-      var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
-      var guessForT = intervalStart + dist * kSampleStepSize;
-
-      var initialSlope = getSlope(guessForT, mX1, mX2);
-      if (initialSlope >= NEWTON_MIN_SLOPE) {
-        return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
-      } else if (initialSlope === 0.0) {
-        return guessForT;
-      } else {
-        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
-      }
-    }
-
-    return function BezierEasing (x) {
-      if (mX1 === mY1 && mX2 === mY2) {
-        return x; // linear
-      }
-      // Because JavaScript number are imprecise, we should guarantee the extremes are right.
-      if (x === 0) {
-        return 0;
-      }
-      if (x === 1) {
-        return 1;
-      }
-      return calcBezier(getTForX(x), mY1, mY2);
-    };
-  };
-
-  this.colorEasing = BezierEasing(0.26, 0.09, 0.37, 0.18);
-  // less 3 requires a return
-  return '';
-})()`;
-}
-// It is hacky way to make this function will be compiled preferentially by less
-// resolve error: `ReferenceError: colorPalette is not defined`
-// https://github.com/ant-design/ant-motion/issues/44
-.bezierEasingMixin();
-
-/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
-.tinyColorMixin() {
-  @functions: ~`(function() {
-// TinyColor v1.4.1
-// https://github.com/bgrins/TinyColor
-// 2016-07-07, Brian Grinstead, MIT License
-var trimLeft = /^\s+/,
-    trimRight = /\s+$/,
-    tinyCounter = 0,
-    mathRound = Math.round,
-    mathMin = Math.min,
-    mathMax = Math.max,
-    mathRandom = Math.random;
-
-function tinycolor (color, opts) {
-
-    color = (color) ? color : '';
-    opts = opts || { };
-
-    // If input is already a tinycolor, return itself
-    if (color instanceof tinycolor) {
-       return color;
-    }
-    // If we are called as a function, call using new instead
-    if (!(this instanceof tinycolor)) {
-        return new tinycolor(color, opts);
-    }
-
-    var rgb = inputToRGB(color);
-    this._originalInput = color,
-    this._r = rgb.r,
-    this._g = rgb.g,
-    this._b = rgb.b,
-    this._a = rgb.a,
-    this._roundA = mathRound(100*this._a) / 100,
-    this._format = opts.format || rgb.format;
-    this._gradientType = opts.gradientType;
-
-    // Don't let the range of [0,255] come back in [0,1].
-    // Potentially lose a little bit of precision here, but will fix issues where
-    // .5 gets interpreted as half of the total, instead of half of 1
-    // If it was supposed to be 128, this was already taken care of by inputToRgb
-    if (this._r < 1) { this._r = mathRound(this._r); }
-    if (this._g < 1) { this._g = mathRound(this._g); }
-    if (this._b < 1) { this._b = mathRound(this._b); }
-
-    this._ok = rgb.ok;
-    this._tc_id = tinyCounter++;
-}
-
-tinycolor.prototype = {
-    isDark: function() {
-        return this.getBrightness() < 128;
-    },
-    isLight: function() {
-        return !this.isDark();
-    },
-    isValid: function() {
-        return this._ok;
-    },
-    getOriginalInput: function() {
-      return this._originalInput;
-    },
-    getFormat: function() {
-        return this._format;
-    },
-    getAlpha: function() {
-        return this._a;
-    },
-    getBrightness: function() {
-        //http://www.w3.org/TR/AERT#color-contrast
-        var rgb = this.toRgb();
-        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;
-    },
-    getLuminance: function() {
-        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
-        var rgb = this.toRgb();
-        var RsRGB, GsRGB, BsRGB, R, G, B;
-        RsRGB = rgb.r/255;
-        GsRGB = rgb.g/255;
-        BsRGB = rgb.b/255;
-
-        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}
-        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}
-        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}
-        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);
-    },
-    setAlpha: function(value) {
-        this._a = boundAlpha(value);
-        this._roundA = mathRound(100*this._a) / 100;
-        return this;
-    },
-    toHsv: function() {
-        var hsv = rgbToHsv(this._r, this._g, this._b);
-        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };
-    },
-    toHsvString: function() {
-        var hsv = rgbToHsv(this._r, this._g, this._b);
-        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);
-        return (this._a == 1) ?
-          "hsv("  + h + ", " + s + "%, " + v + "%)" :
-          "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")";
-    },
-    toHsl: function() {
-        var hsl = rgbToHsl(this._r, this._g, this._b);
-        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };
-    },
-    toHslString: function() {
-        var hsl = rgbToHsl(this._r, this._g, this._b);
-        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);
-        return (this._a == 1) ?
-          "hsl("  + h + ", " + s + "%, " + l + "%)" :
-          "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")";
-    },
-    toHex: function(allow3Char) {
-        return rgbToHex(this._r, this._g, this._b, allow3Char);
-    },
-    toHexString: function(allow3Char) {
-        return '#' + this.toHex(allow3Char);
-    },
-    toHex8: function(allow4Char) {
-        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);
-    },
-    toHex8String: function(allow4Char) {
-        return '#' + this.toHex8(allow4Char);
-    },
-    toRgb: function() {
-        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };
-    },
-    toRgbString: function() {
-        return (this._a == 1) ?
-          "rgb("  + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" :
-          "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")";
-    },
-    toPercentageRgb: function() {
-        return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a };
-    },
-    toPercentageRgbString: function() {
-        return (this._a == 1) ?
-          "rgb("  + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" :
-          "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")";
-    },
-    toName: function() {
-        if (this._a === 0) {
-            return "transparent";
-        }
-
-        if (this._a < 1) {
-            return false;
-        }
-
-        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;
-    },
-    toFilter: function(secondColor) {
-        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);
-        var secondHex8String = hex8String;
-        var gradientType = this._gradientType ? "GradientType = 1, " : "";
-
-        if (secondColor) {
-            var s = tinycolor(secondColor);
-            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);
-        }
-
-        return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")";
-    },
-    toString: function(format) {
-        var formatSet = !!format;
-        format = format || this._format;
-
-        var formattedString = false;
-        var hasAlpha = this._a < 1 && this._a >= 0;
-        var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name");
-
-        if (needsAlphaFormat) {
-            // Special case for "transparent", all other non-alpha formats
-            // will return rgba when there is transparency.
-            if (format === "name" && this._a === 0) {
-                return this.toName();
-            }
-            return this.toRgbString();
-        }
-        if (format === "rgb") {
-            formattedString = this.toRgbString();
-        }
-        if (format === "prgb") {
-            formattedString = this.toPercentageRgbString();
-        }
-        if (format === "hex" || format === "hex6") {
-            formattedString = this.toHexString();
-        }
-        if (format === "hex3") {
-            formattedString = this.toHexString(true);
-        }
-        if (format === "hex4") {
-            formattedString = this.toHex8String(true);
-        }
-        if (format === "hex8") {
-            formattedString = this.toHex8String();
-        }
-        if (format === "name") {
-            formattedString = this.toName();
-        }
-        if (format === "hsl") {
-            formattedString = this.toHslString();
-        }
-        if (format === "hsv") {
-            formattedString = this.toHsvString();
-        }
-
-        return formattedString || this.toHexString();
-    },
-    clone: function() {
-        return tinycolor(this.toString());
-    },
-
-    _applyModification: function(fn, args) {
-        var color = fn.apply(null, [this].concat([].slice.call(args)));
-        this._r = color._r;
-        this._g = color._g;
-        this._b = color._b;
-        this.setAlpha(color._a);
-        return this;
-    },
-    lighten: function() {
-        return this._applyModification(lighten, arguments);
-    },
-    brighten: function() {
-        return this._applyModification(brighten, arguments);
-    },
-    darken: function() {
-        return this._applyModification(darken, arguments);
-    },
-    desaturate: function() {
-        return this._applyModification(desaturate, arguments);
-    },
-    saturate: function() {
-        return this._applyModification(saturate, arguments);
-    },
-    greyscale: function() {
-        return this._applyModification(greyscale, arguments);
-    },
-    spin: function() {
-        return this._applyModification(spin, arguments);
-    },
-
-    _applyCombination: function(fn, args) {
-        return fn.apply(null, [this].concat([].slice.call(args)));
-    },
-    analogous: function() {
-        return this._applyCombination(analogous, arguments);
-    },
-    complement: function() {
-        return this._applyCombination(complement, arguments);
-    },
-    monochromatic: function() {
-        return this._applyCombination(monochromatic, arguments);
-    },
-    splitcomplement: function() {
-        return this._applyCombination(splitcomplement, arguments);
-    },
-    triad: function() {
-        return this._applyCombination(triad, arguments);
-    },
-    tetrad: function() {
-        return this._applyCombination(tetrad, arguments);
-    }
-};
-
-// If input is an object, force 1 into "1.0" to handle ratios properly
-// String input requires "1.0" as input, so 1 will be treated as 1
-tinycolor.fromRatio = function(color, opts) {
-    if (typeof color == "object") {
-        var newColor = {};
-        for (var i in color) {
-            if (color.hasOwnProperty(i)) {
-                if (i === "a") {
-                    newColor[i] = color[i];
-                }
-                else {
-                    newColor[i] = convertToPercentage(color[i]);
-                }
-            }
-        }
-        color = newColor;
-    }
-
-    return tinycolor(color, opts);
-};
-
-// Given a string or object, convert that input to RGB
-// Possible string inputs:
-//
-//     "red"
-//     "#f00" or "f00"
-//     "#ff0000" or "ff0000"
-//     "#ff000000" or "ff000000"
-//     "rgb 255 0 0" or "rgb (255, 0, 0)"
-//     "rgb 1.0 0 0" or "rgb (1, 0, 0)"
-//     "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1"
-//     "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1"
-//     "hsl(0, 100%, 50%)" or "hsl 0 100% 50%"
-//     "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1"
-//     "hsv(0, 100%, 100%)" or "hsv 0 100% 100%"
-//
-function inputToRGB(color) {
-
-    var rgb = { r: 0, g: 0, b: 0 };
-    var a = 1;
-    var s = null;
-    var v = null;
-    var l = null;
-    var ok = false;
-    var format = false;
-
-    if (typeof color == "string") {
-        color = stringInputToObject(color);
-    }
-
-    if (typeof color == "object") {
-        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
-            rgb = rgbToRgb(color.r, color.g, color.b);
-            ok = true;
-            format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
-        }
-        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
-            s = convertToPercentage(color.s);
-            v = convertToPercentage(color.v);
-            rgb = hsvToRgb(color.h, s, v);
-            ok = true;
-            format = "hsv";
-        }
-        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
-            s = convertToPercentage(color.s);
-            l = convertToPercentage(color.l);
-            rgb = hslToRgb(color.h, s, l);
-            ok = true;
-            format = "hsl";
-        }
-
-        if (color.hasOwnProperty("a")) {
-            a = color.a;
-        }
-    }
-
-    a = boundAlpha(a);
-
-    return {
-        ok: ok,
-        format: color.format || format,
-        r: mathMin(255, mathMax(rgb.r, 0)),
-        g: mathMin(255, mathMax(rgb.g, 0)),
-        b: mathMin(255, mathMax(rgb.b, 0)),
-        a: a
-    };
-}
-
-// Conversion Functions
-// --------------------
-
-// rgbToHsl, rgbToHsv, hslToRgb, hsvToRgb modified from:
-// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>
-
-// rgbToRgb
-// Handle bounds / percentage checking to conform to CSS color spec
-// <http://www.w3.org/TR/css3-color/>
-// *Assumes:* r, g, b in [0, 255] or [0, 1]
-// *Returns:* { r, g, b } in [0, 255]
-function rgbToRgb(r, g, b){
-    return {
-        r: bound01(r, 255) * 255,
-        g: bound01(g, 255) * 255,
-        b: bound01(b, 255) * 255
-    };
-}
-
-// rgbToHsl
-// Converts an RGB color value to HSL.
-// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]
-// *Returns:* { h, s, l } in [0,1]
-function rgbToHsl(r, g, b) {
-
-    r = bound01(r, 255);
-    g = bound01(g, 255);
-    b = bound01(b, 255);
-
-    var max = mathMax(r, g, b), min = mathMin(r, g, b);
-    var h, s, l = (max + min) / 2;
-
-    if(max == min) {
-        h = s = 0; // achromatic
-    }
-    else {
-        var d = max - min;
-        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
-        switch(max) {
-            case r: h = (g - b) / d + (g < b ? 6 : 0); break;
-            case g: h = (b - r) / d + 2; break;
-            case b: h = (r - g) / d + 4; break;
-        }
-
-        h /= 6;
-    }
-
-    return { h: h, s: s, l: l };
-}
-
-// hslToRgb
-// Converts an HSL color value to RGB.
-// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]
-// *Returns:* { r, g, b } in the set [0, 255]
-function hslToRgb(h, s, l) {
-    var r, g, b;
-
-    h = bound01(h, 360);
-    s = bound01(s, 100);
-    l = bound01(l, 100);
-
-    function hue2rgb(p, q, t) {
-        if(t < 0) t += 1;
-        if(t > 1) t -= 1;
-        if(t < 1/6) return p + (q - p) * 6 * t;
-        if(t < 1/2) return q;
-        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
-        return p;
-    }
-
-    if(s === 0) {
-        r = g = b = l; // achromatic
-    }
-    else {
-        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
-        var p = 2 * l - q;
-        r = hue2rgb(p, q, h + 1/3);
-        g = hue2rgb(p, q, h);
-        b = hue2rgb(p, q, h - 1/3);
-    }
-
-    return { r: r * 255, g: g * 255, b: b * 255 };
-}
-
-// rgbToHsv
-// Converts an RGB color value to HSV
-// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]
-// *Returns:* { h, s, v } in [0,1]
-function rgbToHsv(r, g, b) {
-
-    r = bound01(r, 255);
-    g = bound01(g, 255);
-    b = bound01(b, 255);
-
-    var max = mathMax(r, g, b), min = mathMin(r, g, b);
-    var h, s, v = max;
-
-    var d = max - min;
-    s = max === 0 ? 0 : d / max;
-
-    if(max == min) {
-        h = 0; // achromatic
-    }
-    else {
-        switch(max) {
-            case r: h = (g - b) / d + (g < b ? 6 : 0); break;
-            case g: h = (b - r) / d + 2; break;
-            case b: h = (r - g) / d + 4; break;
-        }
-        h /= 6;
-    }
-    return { h: h, s: s, v: v };
-}
-
-// hsvToRgb
-// Converts an HSV color value to RGB.
-// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
-// *Returns:* { r, g, b } in the set [0, 255]
- function hsvToRgb(h, s, v) {
-
-    h = bound01(h, 360) * 6;
-    s = bound01(s, 100);
-    v = bound01(v, 100);
-
-    var i = Math.floor(h),
-        f = h - i,
-        p = v * (1 - s),
-        q = v * (1 - f * s),
-        t = v * (1 - (1 - f) * s),
-        mod = i % 6,
-        r = [v, q, p, p, t, v][mod],
-        g = [t, v, v, q, p, p][mod],
-        b = [p, p, t, v, v, q][mod];
-
-    return { r: r * 255, g: g * 255, b: b * 255 };
-}
-
-// rgbToHex
-// Converts an RGB color to hex
-// Assumes r, g, and b are contained in the set [0, 255]
-// Returns a 3 or 6 character hex
-function rgbToHex(r, g, b, allow3Char) {
-
-    var hex = [
-        pad2(mathRound(r).toString(16)),
-        pad2(mathRound(g).toString(16)),
-        pad2(mathRound(b).toString(16))
-    ];
-
-    // Return a 3 character hex if possible
-    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {
-        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);
-    }
-
-    return hex.join("");
-}
-
-// rgbaToHex
-// Converts an RGBA color plus alpha transparency to hex
-// Assumes r, g, b are contained in the set [0, 255] and
-// a in [0, 1]. Returns a 4 or 8 character rgba hex
-function rgbaToHex(r, g, b, a, allow4Char) {
-
-    var hex = [
-        pad2(mathRound(r).toString(16)),
-        pad2(mathRound(g).toString(16)),
-        pad2(mathRound(b).toString(16)),
-        pad2(convertDecimalToHex(a))
-    ];
-
-    // Return a 4 character hex if possible
-    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {
-        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);
-    }
-
-    return hex.join("");
-}
-
-// rgbaToArgbHex
-// Converts an RGBA color to an ARGB Hex8 string
-// Rarely used, but required for "toFilter()"
-function rgbaToArgbHex(r, g, b, a) {
-
-    var hex = [
-        pad2(convertDecimalToHex(a)),
-        pad2(mathRound(r).toString(16)),
-        pad2(mathRound(g).toString(16)),
-        pad2(mathRound(b).toString(16))
-    ];
-
-    return hex.join("");
-}
-
-// equals
-// Can be called with any tinycolor input
-tinycolor.equals = function (color1, color2) {
-    if (!color1 || !color2) { return false; }
-    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();
-};
-
-tinycolor.random = function() {
-    return tinycolor.fromRatio({
-        r: mathRandom(),
-        g: mathRandom(),
-        b: mathRandom()
-    });
-};
-
-// Modification Functions
-// ----------------------
-// Thanks to less.js for some of the basics here
-// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>
-
-function desaturate(color, amount) {
-    amount = (amount === 0) ? 0 : (amount || 10);
-    var hsl = tinycolor(color).toHsl();
-    hsl.s -= amount / 100;
-    hsl.s = clamp01(hsl.s);
-    return tinycolor(hsl);
-}
-
-function saturate(color, amount) {
-    amount = (amount === 0) ? 0 : (amount || 10);
-    var hsl = tinycolor(color).toHsl();
-    hsl.s += amount / 100;
-    hsl.s = clamp01(hsl.s);
-    return tinycolor(hsl);
-}
-
-function greyscale(color) {
-    return tinycolor(color).desaturate(100);
-}
-
-function lighten (color, amount) {
-    amount = (amount === 0) ? 0 : (amount || 10);
-    var hsl = tinycolor(color).toHsl();
-    hsl.l += amount / 100;
-    hsl.l = clamp01(hsl.l);
-    return tinycolor(hsl);
-}
-
-function brighten(color, amount) {
-    amount = (amount === 0) ? 0 : (amount || 10);
-    var rgb = tinycolor(color).toRgb();
-    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));
-    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));
-    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));
-    return tinycolor(rgb);
-}
-
-function darken (color, amount) {
-    amount = (amount === 0) ? 0 : (amount || 10);
-    var hsl = tinycolor(color).toHsl();
-    hsl.l -= amount / 100;
-    hsl.l = clamp01(hsl.l);
-    return tinycolor(hsl);
-}
-
-// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.
-// Values outside of this range will be wrapped into this range.
-function spin(color, amount) {
-    var hsl = tinycolor(color).toHsl();
-    var hue = (hsl.h + amount) % 360;
-    hsl.h = hue < 0 ? 360 + hue : hue;
-    return tinycolor(hsl);
-}
-
-// Combination Functions
-// ---------------------
-// Thanks to jQuery xColor for some of the ideas behind these
-// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>
-
-function complement(color) {
-    var hsl = tinycolor(color).toHsl();
-    hsl.h = (hsl.h + 180) % 360;
-    return tinycolor(hsl);
-}
-
-function triad(color) {
-    var hsl = tinycolor(color).toHsl();
-    var h = hsl.h;
-    return [
-        tinycolor(color),
-        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),
-        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })
-    ];
-}
-
-function tetrad(color) {
-    var hsl = tinycolor(color).toHsl();
-    var h = hsl.h;
-    return [
-        tinycolor(color),
-        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),
-        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),
-        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })
-    ];
-}
-
-function splitcomplement(color) {
-    var hsl = tinycolor(color).toHsl();
-    var h = hsl.h;
-    return [
-        tinycolor(color),
-        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),
-        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})
-    ];
-}
-
-function analogous(color, results, slices) {
-    results = results || 6;
-    slices = slices || 30;
-
-    var hsl = tinycolor(color).toHsl();
-    var part = 360 / slices;
-    var ret = [tinycolor(color)];
-
-    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {
-        hsl.h = (hsl.h + part) % 360;
-        ret.push(tinycolor(hsl));
-    }
-    return ret;
-}
-
-function monochromatic(color, results) {
-    results = results || 6;
-    var hsv = tinycolor(color).toHsv();
-    var h = hsv.h, s = hsv.s, v = hsv.v;
-    var ret = [];
-    var modification = 1 / results;
-
-    while (results--) {
-        ret.push(tinycolor({ h: h, s: s, v: v}));
-        v = (v + modification) % 1;
-    }
-
-    return ret;
-}
-
-// Utility Functions
-// ---------------------
-
-tinycolor.mix = function(color1, color2, amount) {
-    amount = (amount === 0) ? 0 : (amount || 50);
-
-    var rgb1 = tinycolor(color1).toRgb();
-    var rgb2 = tinycolor(color2).toRgb();
-
-    var p = amount / 100;
-
-    var rgba = {
-        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,
-        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,
-        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,
-        a: ((rgb2.a - rgb1.a) * p) + rgb1.a
-    };
-
-    return tinycolor(rgba);
-};
-
-// Readability Functions
-// ---------------------
-// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)
-
-// contrast
-// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)
-tinycolor.readability = function(color1, color2) {
-    var c1 = tinycolor(color1);
-    var c2 = tinycolor(color2);
-    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);
-};
-
-// isReadable
-// Ensure that foreground and background color combinations meet WCAG2 guidelines.
-// The third argument is an optional Object.
-//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';
-//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.
-// If the entire object is absent, isReadable defaults to {level:"AA",size:"small"}.
-
-// *Example*
-//    tinycolor.isReadable("#000", "#111") => false
-//    tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false
-tinycolor.isReadable = function(color1, color2, wcag2) {
-    var readability = tinycolor.readability(color1, color2);
-    var wcag2Parms, out;
-
-    out = false;
-
-    wcag2Parms = validateWCAG2Parms(wcag2);
-    switch (wcag2Parms.level + wcag2Parms.size) {
-        case "AAsmall":
-        case "AAAlarge":
-            out = readability >= 4.5;
-            break;
-        case "AAlarge":
-            out = readability >= 3;
-            break;
-        case "AAAsmall":
-            out = readability >= 7;
-            break;
-    }
-    return out;
-
-};
-
-// mostReadable
-// Given a base color and a list of possible foreground or background
-// colors for that base, returns the most readable color.
-// Optionally returns Black or White if the most readable color is unreadable.
-// *Example*
-//    tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255"
-//    tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString();  // "#ffffff"
-//    tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3"
-//    tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff"
-tinycolor.mostReadable = function(baseColor, colorList, args) {
-    var bestColor = null;
-    var bestScore = 0;
-    var readability;
-    var includeFallbackColors, level, size ;
-    args = args || {};
-    includeFallbackColors = args.includeFallbackColors ;
-    level = args.level;
-    size = args.size;
-
-    for (var i= 0; i < colorList.length ; i++) {
-        readability = tinycolor.readability(baseColor, colorList[i]);
-        if (readability > bestScore) {
-            bestScore = readability;
-            bestColor = tinycolor(colorList[i]);
-        }
-    }
-
-    if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) {
-        return bestColor;
-    }
-    else {
-        args.includeFallbackColors=false;
-        return tinycolor.mostReadable(baseColor,["#fff", "#000"],args);
-    }
-};
-
-// Big List of Colors
-// ------------------
-// <http://www.w3.org/TR/css3-color/#svg-color>
-var names = tinycolor.names = {
-    aliceblue: "f0f8ff",
-    antiquewhite: "faebd7",
-    aqua: "0ff",
-    aquamarine: "7fffd4",
-    azure: "f0ffff",
-    beige: "f5f5dc",
-    bisque: "ffe4c4",
-    black: "000",
-    blanchedalmond: "ffebcd",
-    blue: "00f",
-    blueviolet: "8a2be2",
-    brown: "a52a2a",
-    burlywood: "deb887",
-    burntsienna: "ea7e5d",
-    cadetblue: "5f9ea0",
-    chartreuse: "7fff00",
-    chocolate: "d2691e",
-    coral: "ff7f50",
-    cornflowerblue: "6495ed",
-    cornsilk: "fff8dc",
-    crimson: "dc143c",
-    cyan: "0ff",
-    darkblue: "00008b",
-    darkcyan: "008b8b",
-    darkgoldenrod: "b8860b",
-    darkgray: "a9a9a9",
-    darkgreen: "006400",
-    darkgrey: "a9a9a9",
-    darkkhaki: "bdb76b",
-    darkmagenta: "8b008b",
-    darkolivegreen: "556b2f",
-    darkorange: "ff8c00",
-    darkorchid: "9932cc",
-    darkred: "8b0000",
-    darksalmon: "e9967a",
-    darkseagreen: "8fbc8f",
-    darkslateblue: "483d8b",
-    darkslategray: "2f4f4f",
-    darkslategrey: "2f4f4f",
-    darkturquoise: "00ced1",
-    darkviolet: "9400d3",
-    deeppink: "ff1493",
-    deepskyblue: "00bfff",
-    dimgray: "696969",
-    dimgrey: "696969",
-    dodgerblue: "1e90ff",
-    firebrick: "b22222",
-    floralwhite: "fffaf0",
-    forestgreen: "228b22",
-    fuchsia: "f0f",
-    gainsboro: "dcdcdc",
-    ghostwhite: "f8f8ff",
-    gold: "ffd700",
-    goldenrod: "daa520",
-    gray: "808080",
-    green: "008000",
-    greenyellow: "adff2f",
-    grey: "808080",
-    honeydew: "f0fff0",
-    hotpink: "ff69b4",
-    indianred: "cd5c5c",
-    indigo: "4b0082",
-    ivory: "fffff0",
-    khaki: "f0e68c",
-    lavender: "e6e6fa",
-    lavenderblush: "fff0f5",
-    lawngreen: "7cfc00",
-    lemonchiffon: "fffacd",
-    lightblue: "add8e6",
-    lightcoral: "f08080",
-    lightcyan: "e0ffff",
-    lightgoldenrodyellow: "fafad2",
-    lightgray: "d3d3d3",
-    lightgreen: "90ee90",
-    lightgrey: "d3d3d3",
-    lightpink: "ffb6c1",
-    lightsalmon: "ffa07a",
-    lightseagreen: "20b2aa",
-    lightskyblue: "87cefa",
-    lightslategray: "789",
-    lightslategrey: "789",
-    lightsteelblue: "b0c4de",
-    lightyellow: "ffffe0",
-    lime: "0f0",
-    limegreen: "32cd32",
-    linen: "faf0e6",
-    magenta: "f0f",
-    maroon: "800000",
-    mediumaquamarine: "66cdaa",
-    mediumblue: "0000cd",
-    mediumorchid: "ba55d3",
-    mediumpurple: "9370db",
-    mediumseagreen: "3cb371",
-    mediumslateblue: "7b68ee",
-    mediumspringgreen: "00fa9a",
-    mediumturquoise: "48d1cc",
-    mediumvioletred: "c71585",
-    midnightblue: "191970",
-    mintcream: "f5fffa",
-    mistyrose: "ffe4e1",
-    moccasin: "ffe4b5",
-    navajowhite: "ffdead",
-    navy: "000080",
-    oldlace: "fdf5e6",
-    olive: "808000",
-    olivedrab: "6b8e23",
-    orange: "ffa500",
-    orangered: "ff4500",
-    orchid: "da70d6",
-    palegoldenrod: "eee8aa",
-    palegreen: "98fb98",
-    paleturquoise: "afeeee",
-    palevioletred: "db7093",
-    papayawhip: "ffefd5",
-    peachpuff: "ffdab9",
-    peru: "cd853f",
-    pink: "ffc0cb",
-    plum: "dda0dd",
-    powderblue: "b0e0e6",
-    purple: "800080",
-    rebeccapurple: "663399",
-    red: "f00",
-    rosybrown: "bc8f8f",
-    royalblue: "4169e1",
-    saddlebrown: "8b4513",
-    salmon: "fa8072",
-    sandybrown: "f4a460",
-    seagreen: "2e8b57",
-    seashell: "fff5ee",
-    sienna: "a0522d",
-    silver: "c0c0c0",
-    skyblue: "87ceeb",
-    slateblue: "6a5acd",
-    slategray: "708090",
-    slategrey: "708090",
-    snow: "fffafa",
-    springgreen: "00ff7f",
-    steelblue: "4682b4",
-    tan: "d2b48c",
-    teal: "008080",
-    thistle: "d8bfd8",
-    tomato: "ff6347",
-    turquoise: "40e0d0",
-    violet: "ee82ee",
-    wheat: "f5deb3",
-    white: "fff",
-    whitesmoke: "f5f5f5",
-    yellow: "ff0",
-    yellowgreen: "9acd32"
-};
-
-// Make it easy to access colors via hexNames[hex]
-var hexNames = tinycolor.hexNames = flip(names);
-
-// Utilities
-// ---------
-
-// { 'name1': 'val1' } becomes { 'val1': 'name1' }
-function flip(o) {
-    var flipped = { };
-    for (var i in o) {
-        if (o.hasOwnProperty(i)) {
-            flipped[o[i]] = i;
-        }
-    }
-    return flipped;
-}
-
-// Return a valid alpha value [0,1] with all invalid values being set to 1
-function boundAlpha(a) {
-    a = parseFloat(a);
-
-    if (isNaN(a) || a < 0 || a > 1) {
-        a = 1;
-    }
-
-    return a;
-}
-
-// Take input from [0, n] and return it as [0, 1]
-function bound01(n, max) {
-    if (isOnePointZero(n)) { n = "100%"; }
-
-    var processPercent = isPercentage(n);
-    n = mathMin(max, mathMax(0, parseFloat(n)));
-
-    // Automatically convert percentage into number
-    if (processPercent) {
-        n = parseInt(n * max, 10) / 100;
-    }
-
-    // Handle floating point rounding errors
-    if ((Math.abs(n - max) < 0.000001)) {
-        return 1;
-    }
-
-    // Convert into [0, 1] range if it isn't already
-    return (n % max) / parseFloat(max);
-}
-
-// Force a number between 0 and 1
-function clamp01(val) {
-    return mathMin(1, mathMax(0, val));
-}
-
-// Parse a base-16 hex value into a base-10 integer
-function parseIntFromHex(val) {
-    return parseInt(val, 16);
-}
-
-// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1
-// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>
-function isOnePointZero(n) {
-    return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1;
-}
-
-// Check to see if string passed in is a percentage
-function isPercentage(n) {
-    return typeof n === "string" && n.indexOf('%') != -1;
-}
-
-// Force a hex value to have 2 characters
-function pad2(c) {
-    return c.length == 1 ? '0' + c : '' + c;
-}
-
-// Replace a decimal with it's percentage value
-function convertToPercentage(n) {
-    if (n <= 1) {
-        n = (n * 100) + "%";
-    }
-
-    return n;
-}
-
-// Converts a decimal to a hex value
-function convertDecimalToHex(d) {
-    return Math.round(parseFloat(d) * 255).toString(16);
-}
-// Converts a hex value to a decimal
-function convertHexToDecimal(h) {
-    return (parseIntFromHex(h) / 255);
-}
-
-var matchers = (function() {
-
-    // <http://www.w3.org/TR/css3-values/#integers>
-    var CSS_INTEGER = "[-\\+]?\\d+%?";
-
-    // <http://www.w3.org/TR/css3-values/#number-value>
-    var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
-
-    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.
-    var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")";
-
-    // Actual matching.
-    // Parentheses and commas are optional, but not required.
-    // Whitespace can take the place of commas or opening paren
-    var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
-    var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
-
-    return {
-        CSS_UNIT: new RegExp(CSS_UNIT),
-        rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
-        rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
-        hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
-        hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
-        hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
-        hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
-        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
-        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
-        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
-        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
-    };
-})();
-
-// isValidCSSUnit
-// Take in a single string / number and check to see if it looks like a CSS unit
-// (see matchers above for definition).
-function isValidCSSUnit(color) {
-    return !!matchers.CSS_UNIT.exec(color);
-}
-
-// stringInputToObject
-// Permissive string parsing.  Take in a number of formats, and output an object
-// based on detected format.  Returns { r, g, b } or { h, s, l } or { h, s, v}
-function stringInputToObject(color) {
-
-    color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();
-    var named = false;
-    if (names[color]) {
-        color = names[color];
-        named = true;
-    }
-    else if (color == 'transparent') {
-        return { r: 0, g: 0, b: 0, a: 0, format: "name" };
-    }
-
-    // Try to match string input using regular expressions.
-    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]
-    // Just return an object and let the conversion functions handle that.
-    // This way the result will be the same whether the tinycolor is initialized with string or object.
-    var match;
-    if ((match = matchers.rgb.exec(color))) {
-        return { r: match[1], g: match[2], b: match[3] };
-    }
-    if ((match = matchers.rgba.exec(color))) {
-        return { r: match[1], g: match[2], b: match[3], a: match[4] };
-    }
-    if ((match = matchers.hsl.exec(color))) {
-        return { h: match[1], s: match[2], l: match[3] };
-    }
-    if ((match = matchers.hsla.exec(color))) {
-        return { h: match[1], s: match[2], l: match[3], a: match[4] };
-    }
-    if ((match = matchers.hsv.exec(color))) {
-        return { h: match[1], s: match[2], v: match[3] };
-    }
-    if ((match = matchers.hsva.exec(color))) {
-        return { h: match[1], s: match[2], v: match[3], a: match[4] };
-    }
-    if ((match = matchers.hex8.exec(color))) {
-        return {
-            r: parseIntFromHex(match[1]),
-            g: parseIntFromHex(match[2]),
-            b: parseIntFromHex(match[3]),
-            a: convertHexToDecimal(match[4]),
-            format: named ? "name" : "hex8"
-        };
-    }
-    if ((match = matchers.hex6.exec(color))) {
-        return {
-            r: parseIntFromHex(match[1]),
-            g: parseIntFromHex(match[2]),
-            b: parseIntFromHex(match[3]),
-            format: named ? "name" : "hex"
-        };
-    }
-    if ((match = matchers.hex4.exec(color))) {
-        return {
-            r: parseIntFromHex(match[1] + '' + match[1]),
-            g: parseIntFromHex(match[2] + '' + match[2]),
-            b: parseIntFromHex(match[3] + '' + match[3]),
-            a: convertHexToDecimal(match[4] + '' + match[4]),
-            format: named ? "name" : "hex8"
-        };
-    }
-    if ((match = matchers.hex3.exec(color))) {
-        return {
-            r: parseIntFromHex(match[1] + '' + match[1]),
-            g: parseIntFromHex(match[2] + '' + match[2]),
-            b: parseIntFromHex(match[3] + '' + match[3]),
-            format: named ? "name" : "hex"
-        };
-    }
-
-    return false;
-}
-
-function validateWCAG2Parms(parms) {
-    // return valid WCAG2 parms for isReadable.
-    // If input parms are invalid, return {"level":"AA", "size":"small"}
-    var level, size;
-    parms = parms || {"level":"AA", "size":"small"};
-    level = (parms.level || "AA").toUpperCase();
-    size = (parms.size || "small").toLowerCase();
-    if (level !== "AA" && level !== "AAA") {
-        level = "AA";
-    }
-    if (size !== "small" && size !== "large") {
-        size = "small";
-    }
-    return {"level":level, "size":size};
-}
-
-this.tinycolor = tinycolor;
-
-})()`;
-}
-// It is hacky way to make this function will be compiled preferentially by less
-// resolve error: `ReferenceError: colorPalette is not defined`
-// https://github.com/ant-design/ant-motion/issues/44
-.tinyColorMixin();
-
-// We create a very complex algorithm which take the place of original tint/shade color system
-// to make sure no one can understand it 👻
-// and create an entire color palette magically by inputting just a single primary color.
-// We are using bezier-curve easing function and some color manipulations like tint/shade/darken/spin
-.colorPaletteMixin() {
-  @functions: ~`(function() {
-  var hueStep = 2;
-  var saturationStep = 16;
-  var saturationStep2 = 5;
-  var brightnessStep1 = 5;
-  var brightnessStep2 = 15;
-  var lightColorCount = 5;
-  var darkColorCount = 4;
-
-  var getHue = function(hsv, i, isLight) {
-    var hue;
-    if (hsv.h >= 60 && hsv.h <= 240) {
-      hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i;
-    } else {
-      hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i;
-    }
-    if (hue < 0) {
-      hue += 360;
-    } else if (hue >= 360) {
-      hue -= 360;
-    }
-    return Math.round(hue);
-  };
-  var getSaturation = function(hsv, i, isLight) {
-    var saturation;
-    if (isLight) {
-      saturation = Math.round(hsv.s * 100) - saturationStep * i;
-    } else if (i == darkColorCount) {
-      saturation = Math.round(hsv.s * 100) + saturationStep;
-    } else {
-      saturation = Math.round(hsv.s * 100) + saturationStep2 * i;
-    }
-    if (saturation > 100) {
-      saturation = 100;
-    }
-    if (isLight && i === lightColorCount && saturation > 10) {
-      saturation = 10;
-    }
-    if (saturation < 6) {
-      saturation = 6;
-    }
-    return Math.round(saturation);
-  };
-  var getValue = function(hsv, i, isLight) {
-    if (isLight) {
-      return Math.round(hsv.v * 100) + brightnessStep1 * i;
-    }
-    return Math.round(hsv.v * 100) - brightnessStep2 * i;
-  };
-
-  this.colorPalette = function(color, index) {
-    var isLight = index <= 6;
-    var hsv = tinycolor(color).toHsv();
-    var i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1;
-    return tinycolor({
-      h: getHue(hsv, i, isLight),
-      s: getSaturation(hsv, i, isLight),
-      v: getValue(hsv, i, isLight),
-    }).toHexString();
-  };
-})()`;
-}
-// It is hacky way to make this function will be compiled preferentially by less
-// resolve error: `ReferenceError: colorPalette is not defined`
-// https://github.com/ant-design/ant-motion/issues/44
-.colorPaletteMixin();
-
-// color palettes
-@blue-1: color(~`colorPalette("@{blue-6}", 1)`);
-@blue-2: color(~`colorPalette("@{blue-6}", 2)`);
-@blue-3: color(~`colorPalette("@{blue-6}", 3)`);
-@blue-4: color(~`colorPalette("@{blue-6}", 4)`);
-@blue-5: color(~`colorPalette("@{blue-6}", 5)`);
-@blue-6: #1890ff;
-@blue-7: color(~`colorPalette("@{blue-6}", 7)`);
-@blue-8: color(~`colorPalette("@{blue-6}", 8)`);
-@blue-9: color(~`colorPalette("@{blue-6}", 9)`);
-@blue-10: color(~`colorPalette("@{blue-6}", 10)`);
-
-@purple-1: color(~`colorPalette("@{purple-6}", 1)`);
-@purple-2: color(~`colorPalette("@{purple-6}", 2)`);
-@purple-3: color(~`colorPalette("@{purple-6}", 3)`);
-@purple-4: color(~`colorPalette("@{purple-6}", 4)`);
-@purple-5: color(~`colorPalette("@{purple-6}", 5)`);
-@purple-6: #722ed1;
-@purple-7: color(~`colorPalette("@{purple-6}", 7)`);
-@purple-8: color(~`colorPalette("@{purple-6}", 8)`);
-@purple-9: color(~`colorPalette("@{purple-6}", 9)`);
-@purple-10: color(~`colorPalette("@{purple-6}", 10)`);
-
-@cyan-1: color(~`colorPalette("@{cyan-6}", 1)`);
-@cyan-2: color(~`colorPalette("@{cyan-6}", 2)`);
-@cyan-3: color(~`colorPalette("@{cyan-6}", 3)`);
-@cyan-4: color(~`colorPalette("@{cyan-6}", 4)`);
-@cyan-5: color(~`colorPalette("@{cyan-6}", 5)`);
-@cyan-6: #13c2c2;
-@cyan-7: color(~`colorPalette("@{cyan-6}", 7)`);
-@cyan-8: color(~`colorPalette("@{cyan-6}", 8)`);
-@cyan-9: color(~`colorPalette("@{cyan-6}", 9)`);
-@cyan-10: color(~`colorPalette("@{cyan-6}", 10)`);
-
-@green-1: color(~`colorPalette("@{green-6}", 1)`);
-@green-2: color(~`colorPalette("@{green-6}", 2)`);
-@green-3: color(~`colorPalette("@{green-6}", 3)`);
-@green-4: color(~`colorPalette("@{green-6}", 4)`);
-@green-5: color(~`colorPalette("@{green-6}", 5)`);
-@green-6: #52c41a;
-@green-7: color(~`colorPalette("@{green-6}", 7)`);
-@green-8: color(~`colorPalette("@{green-6}", 8)`);
-@green-9: color(~`colorPalette("@{green-6}", 9)`);
-@green-10: color(~`colorPalette("@{green-6}", 10)`);
-
-@magenta-1: color(~`colorPalette("@{magenta-6}", 1)`);
-@magenta-2: color(~`colorPalette("@{magenta-6}", 2)`);
-@magenta-3: color(~`colorPalette("@{magenta-6}", 3)`);
-@magenta-4: color(~`colorPalette("@{magenta-6}", 4)`);
-@magenta-5: color(~`colorPalette("@{magenta-6}", 5)`);
-@magenta-6: #eb2f96;
-@magenta-7: color(~`colorPalette("@{magenta-6}", 7)`);
-@magenta-8: color(~`colorPalette("@{magenta-6}", 8)`);
-@magenta-9: color(~`colorPalette("@{magenta-6}", 9)`);
-@magenta-10: color(~`colorPalette("@{magenta-6}", 10)`);
-
-// alias of magenta
-@pink-1: color(~`colorPalette("@{pink-6}", 1)`);
-@pink-2: color(~`colorPalette("@{pink-6}", 2)`);
-@pink-3: color(~`colorPalette("@{pink-6}", 3)`);
-@pink-4: color(~`colorPalette("@{pink-6}", 4)`);
-@pink-5: color(~`colorPalette("@{pink-6}", 5)`);
-@pink-6: #eb2f96;
-@pink-7: color(~`colorPalette("@{pink-6}", 7)`);
-@pink-8: color(~`colorPalette("@{pink-6}", 8)`);
-@pink-9: color(~`colorPalette("@{pink-6}", 9)`);
-@pink-10: color(~`colorPalette("@{pink-6}", 10)`);
-
-@red-1: color(~`colorPalette("@{red-6}", 1)`);
-@red-2: color(~`colorPalette("@{red-6}", 2)`);
-@red-3: color(~`colorPalette("@{red-6}", 3)`);
-@red-4: color(~`colorPalette("@{red-6}", 4)`);
-@red-5: color(~`colorPalette("@{red-6}", 5)`);
-@red-6: #f5222d;
-@red-7: color(~`colorPalette("@{red-6}", 7)`);
-@red-8: color(~`colorPalette("@{red-6}", 8)`);
-@red-9: color(~`colorPalette("@{red-6}", 9)`);
-@red-10: color(~`colorPalette("@{red-6}", 10)`);
-
-@orange-1: color(~`colorPalette("@{orange-6}", 1)`);
-@orange-2: color(~`colorPalette("@{orange-6}", 2)`);
-@orange-3: color(~`colorPalette("@{orange-6}", 3)`);
-@orange-4: color(~`colorPalette("@{orange-6}", 4)`);
-@orange-5: color(~`colorPalette("@{orange-6}", 5)`);
-@orange-6: #fa8c16;
-@orange-7: color(~`colorPalette("@{orange-6}", 7)`);
-@orange-8: color(~`colorPalette("@{orange-6}", 8)`);
-@orange-9: color(~`colorPalette("@{orange-6}", 9)`);
-@orange-10: color(~`colorPalette("@{orange-6}", 10)`);
-
-@yellow-1: color(~`colorPalette("@{yellow-6}", 1)`);
-@yellow-2: color(~`colorPalette("@{yellow-6}", 2)`);
-@yellow-3: color(~`colorPalette("@{yellow-6}", 3)`);
-@yellow-4: color(~`colorPalette("@{yellow-6}", 4)`);
-@yellow-5: color(~`colorPalette("@{yellow-6}", 5)`);
-@yellow-6: #fadb14;
-@yellow-7: color(~`colorPalette("@{yellow-6}", 7)`);
-@yellow-8: color(~`colorPalette("@{yellow-6}", 8)`);
-@yellow-9: color(~`colorPalette("@{yellow-6}", 9)`);
-@yellow-10: color(~`colorPalette("@{yellow-6}", 10)`);
-
-@volcano-1: color(~`colorPalette("@{volcano-6}", 1)`);
-@volcano-2: color(~`colorPalette("@{volcano-6}", 2)`);
-@volcano-3: color(~`colorPalette("@{volcano-6}", 3)`);
-@volcano-4: color(~`colorPalette("@{volcano-6}", 4)`);
-@volcano-5: color(~`colorPalette("@{volcano-6}", 5)`);
-@volcano-6: #fa541c;
-@volcano-7: color(~`colorPalette("@{volcano-6}", 7)`);
-@volcano-8: color(~`colorPalette("@{volcano-6}", 8)`);
-@volcano-9: color(~`colorPalette("@{volcano-6}", 9)`);
-@volcano-10: color(~`colorPalette("@{volcano-6}", 10)`);
-
-@geekblue-1: color(~`colorPalette("@{geekblue-6}", 1)`);
-@geekblue-2: color(~`colorPalette("@{geekblue-6}", 2)`);
-@geekblue-3: color(~`colorPalette("@{geekblue-6}", 3)`);
-@geekblue-4: color(~`colorPalette("@{geekblue-6}", 4)`);
-@geekblue-5: color(~`colorPalette("@{geekblue-6}", 5)`);
-@geekblue-6: #2f54eb;
-@geekblue-7: color(~`colorPalette("@{geekblue-6}", 7)`);
-@geekblue-8: color(~`colorPalette("@{geekblue-6}", 8)`);
-@geekblue-9: color(~`colorPalette("@{geekblue-6}", 9)`);
-@geekblue-10: color(~`colorPalette("@{geekblue-6}", 10)`);
-
-@lime-1: color(~`colorPalette("@{lime-6}", 1)`);
-@lime-2: color(~`colorPalette("@{lime-6}", 2)`);
-@lime-3: color(~`colorPalette("@{lime-6}", 3)`);
-@lime-4: color(~`colorPalette("@{lime-6}", 4)`);
-@lime-5: color(~`colorPalette("@{lime-6}", 5)`);
-@lime-6: #a0d911;
-@lime-7: color(~`colorPalette("@{lime-6}", 7)`);
-@lime-8: color(~`colorPalette("@{lime-6}", 8)`);
-@lime-9: color(~`colorPalette("@{lime-6}", 9)`);
-@lime-10: color(~`colorPalette("@{lime-6}", 10)`);
-
-@gold-1: color(~`colorPalette("@{gold-6}", 1)`);
-@gold-2: color(~`colorPalette("@{gold-6}", 2)`);
-@gold-3: color(~`colorPalette("@{gold-6}", 3)`);
-@gold-4: color(~`colorPalette("@{gold-6}", 4)`);
-@gold-5: color(~`colorPalette("@{gold-6}", 5)`);
-@gold-6: #faad14;
-@gold-7: color(~`colorPalette("@{gold-6}", 7)`);
-@gold-8: color(~`colorPalette("@{gold-6}", 8)`);
-@gold-9: color(~`colorPalette("@{gold-6}", 9)`);
-@gold-10: color(~`colorPalette("@{gold-6}", 10)`);
-
-// The prefix to use on all css classes from ant.
-@ant-prefix             : ant;
-
-// -------- Colors -----------
-
-@info-color             : @blue-6;
-@success-color          : @green-6;
-@processing-color       : @blue-6;
-@error-color            : @red-6;
-@highlight-color        : @red-6;
-@warning-color          : @gold-6;
-@normal-color           : #d9d9d9;
-
-// Color used by default to control hover and active backgrounds and for
-// alert info backgrounds.
-@primary-1: color(~`colorPalette("@{primary-color}", 1)`);  // replace tint(@primary-color, 90%)
-@primary-2: color(~`colorPalette("@{primary-color}", 2)`);  // replace tint(@primary-color, 80%)
-@primary-3: color(~`colorPalette("@{primary-color}", 3)`);  // unused
-@primary-4: color(~`colorPalette("@{primary-color}", 4)`);  // unused
-@primary-5: color(~`colorPalette("@{primary-color}", 5)`);  // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%)
-@primary-6: @primary-color;                                 // color used to control the text color of active buttons, don't use, use @primary-color
-@primary-7: color(~`colorPalette("@{primary-color}", 7)`);  // replace shade(@primary-color, 5%)
-@primary-8: color(~`colorPalette("@{primary-color}", 8)`);  // unused
-@primary-9: color(~`colorPalette("@{primary-color}", 9)`);  // unused
-@primary-10: color(~`colorPalette("@{primary-color}", 10)`);  // unused
-
-// Base Scaffolding Variables
-// ---
-
-// Background color for `<body>`
-@body-background        : #fff;
-// Base background color for most components
-@component-background   : #fff;
-@font-family  : "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif,
-"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
-@code-family            : "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
-@heading-color          : fade(#000, 85%);
-@text-color             : fade(#000, 65%);
-@text-color-secondary   : fade(#000, 45%);
-@heading-color-dark     : fade(#fff, 100%);
-@text-color-dark        : fade(#fff, 85%);
-@text-color-secondary-dark: fade(#fff, 65%);
-@font-size-base         : 14px;
-@font-size-lg           : @font-size-base + 2px;
-@font-size-sm           : 12px;
-@line-height-base       : 1.5;
-@border-radius-base     : 4px;
-@border-radius-sm       : 2px;
-
-// vertical paddings
-@padding-lg    : 24px; // containers
-@padding-md    : 16px; // small containers and buttons
-@padding-sm    : 12px; // Form controls and items
-@padding-xs    : 8px;  // small items
-
-// vertical padding for all form controls
-@control-padding-horizontal: @padding-sm;
-@control-padding-horizontal-sm: @padding-xs;
-
-// The background colors for active and hover states for things like
-// list items or table cells.
-@item-active-bg         : @primary-1;
-@item-hover-bg          : @primary-1;
-
-// ICONFONT
-@iconfont-css-prefix    : anticon;
-
-// LINK
-@link-color             : @primary-color;
-@link-hover-color       : color(~`colorPalette("@{link-color}", 5)`);
-@link-active-color      : color(~`colorPalette("@{link-color}", 7)`);
-@link-decoration        : none;
-@link-hover-decoration  : none;
-
-// Animation
-@ease-base-out       : cubic-bezier(0.7, 0.3, 0.1, 1);
-@ease-base-in        : cubic-bezier(0.9, 0, 0.3, 0.7);
-@ease-out            : cubic-bezier(0.215, 0.61, 0.355, 1);
-@ease-in             : cubic-bezier(0.55, 0.055, 0.675, 0.19);
-@ease-in-out         : cubic-bezier(0.645, 0.045, 0.355, 1);
-@ease-out-back       : cubic-bezier(0.12, 0.4, 0.29, 1.46);
-@ease-in-back        : cubic-bezier(0.71, -0.46, 0.88, 0.6);
-@ease-in-out-back    : cubic-bezier(0.71, -0.46, 0.29, 1.46);
-@ease-out-circ       : cubic-bezier(0.08, 0.82, 0.17, 1);
-@ease-in-circ        : cubic-bezier(0.6, 0.04, 0.98, 0.34);
-@ease-in-out-circ    : cubic-bezier(0.78, 0.14, 0.15, 0.86);
-@ease-out-quint      : cubic-bezier(0.23, 1, 0.32, 1);
-@ease-in-quint       : cubic-bezier(0.755, 0.05, 0.855, 0.06);
-@ease-in-out-quint   : cubic-bezier(0.86, 0, 0.07, 1);
-
-// Border color
-@border-color-base      : hsv(0, 0, 85%);  // base border outline a component
-@border-color-split     : hsv(0, 0, 91%);  // split border inside a component
-@border-width-base      : 1px;            // width of the border for a component
-@border-style-base      : solid;          // style of a components border
-
-// Outline
-@outline-blur-size      : 0;
-@outline-width          : 2px;
-@outline-color          : @primary-color;
-
-@background-color-light : hsv(0, 0, 98%);  // background of header and selected item
-@background-color-base  : hsv(0, 0, 96%);  // Default grey background color
-
-// Disabled states
-@disabled-color         : fade(#000, 25%);
-@disabled-bg            : @background-color-base;
-@disabled-color-dark    : fade(#fff, 35%);
-
-// Shadow
-@shadow-color           : rgba(0, 0, 0, .15);
-@box-shadow-base        : @shadow-1-down;
-@shadow-1-up            : 0 -2px 8px @shadow-color;
-@shadow-1-down          : 0 2px 8px @shadow-color;
-@shadow-1-left          : -2px 0 8px @shadow-color;
-@shadow-1-right         : 2px 0 8px @shadow-color;
-@shadow-2               : 0 4px 12px @shadow-color;
-
-// Buttons
-@btn-font-weight        : 400;
-@btn-border-radius-base : @border-radius-base;
-@btn-border-radius-sm   : @border-radius-base;
-
-@btn-primary-color      : #fff;
-@btn-primary-bg         : @primary-color;
-
-@btn-default-color      : @text-color;
-@btn-default-bg         : #fff;
-@btn-default-border     : @border-color-base;
-
-@btn-danger-color       : @error-color;
-@btn-danger-bg          : @background-color-base;
-@btn-danger-border      : @border-color-base;
-
-@btn-disable-color      : @disabled-color;
-@btn-disable-bg         : @disabled-bg;
-@btn-disable-border     : @border-color-base;
-
-@btn-padding-base       : 0 @padding-md - 1px;
-@btn-font-size-lg       : @font-size-lg;
-@btn-font-size-sm       : @font-size-base;
-@btn-padding-lg         : @btn-padding-base;
-@btn-padding-sm         : 0 @padding-xs - 1px;
-
-@btn-height-base        : 32px;
-@btn-height-lg          : 40px;
-@btn-height-sm          : 24px;
-
-@btn-circle-size        : @btn-height-base;
-@btn-circle-size-lg     : @btn-height-lg;
-@btn-circle-size-sm     : @btn-height-sm;
-
-@btn-group-border       : @primary-5;
-
-// Checkbox
-@checkbox-size          : 16px;
-@checkbox-color         : @primary-color;
-@checkbox-check-color   : #fff;
-
-// Radio
-@radio-size             : 16px;
-@radio-dot-color        : @primary-color;
-
-// Radio buttons
-@radio-button-bg           : @btn-default-bg;
-@radio-button-color        : @btn-default-color;
-@radio-button-hover-color  : @primary-5;
-@radio-button-active-color : @primary-7;
-
-// Media queries breakpoints
-// Extra small screen / phone
-@screen-xs              : 480px;
-@screen-xs-min          : @screen-xs;
-
-// Small screen / tablet
-@screen-sm              : 576px;
-@screen-sm-min          : @screen-sm;
-
-// Medium screen / desktop
-@screen-md              : 768px;
-@screen-md-min          : @screen-md;
-
-// Large screen / wide desktop
-@screen-lg              : 992px;
-@screen-lg-min          : @screen-lg;
-
-// Extra large screen / full hd
-@screen-xl              : 1200px;
-@screen-xl-min          : @screen-xl;
-
-// Extra extra large screen / large desktop
-@screen-xxl              : 1600px;
-@screen-xxl-min          : @screen-xxl;
-
-// provide a maximum
-@screen-xs-max          : (@screen-sm-min - 1px);
-@screen-sm-max          : (@screen-md-min - 1px);
-@screen-md-max          : (@screen-lg-min - 1px);
-@screen-lg-max          : (@screen-xl-min - 1px);
-@screen-xl-max          : (@screen-xxl-min - 1px);
-
-// Grid system
-@grid-columns           : 24;
-@grid-gutter-width      : 0;
-
-// Layout
-@layout-body-background         : #f0f2f5;
-@layout-header-background       : #001529;
-@layout-footer-background       : @layout-body-background;
-@layout-header-height           : 64px;
-@layout-header-padding          : 0 50px;
-@layout-footer-padding          : 24px 50px;
-@layout-sider-background        : @layout-header-background;
-@layout-trigger-height          : 48px;
-@layout-trigger-background      : #002140;
-@layout-trigger-color           : #fff;
-@layout-zero-trigger-width      : 36px;
-@layout-zero-trigger-height     : 42px;
-// Layout light theme
-@layout-sider-background-light  : #fff;
-@layout-trigger-background-light: #fff;
-@layout-trigger-color-light     : @text-color;
-
-// z-index list
-@zindex-affix           : 10;
-@zindex-back-top        : 10;
-@zindex-modal-mask      : 1000;
-@zindex-modal           : 1000;
-@zindex-notification    : 1010;
-@zindex-message         : 1010;
-@zindex-popover         : 1030;
-@zindex-picker          : 1050;
-@zindex-dropdown        : 1050;
-@zindex-tooltip         : 1060;
-
-// Animation
-@animation-duration-slow: .3s; // Modal
-@animation-duration-base: .2s;
-@animation-duration-fast: .1s; // Tooltip
-
-// Form
-// ---
-@label-required-color        : @highlight-color;
-@label-color                 : @heading-color;
-@form-item-margin-bottom     : 24px;
-@form-item-trailing-colon    : true;
-@form-vertical-label-padding : 0 0 8px;
-@form-vertical-label-margin  : 0;
-
-// Input
-// ---
-@input-height-base           : 32px;
-@input-height-lg             : 40px;
-@input-height-sm             : 24px;
-@input-padding-horizontal    : @control-padding-horizontal - 1px;
-@input-padding-horizontal-base: @input-padding-horizontal;
-@input-padding-horizontal-sm : @control-padding-horizontal-sm - 1px;
-@input-padding-horizontal-lg : @input-padding-horizontal;
-@input-padding-vertical-base : 4px;
-@input-padding-vertical-sm   : 1px;
-@input-padding-vertical-lg   : 6px;
-@input-placeholder-color     : hsv(0, 0, 75%);
-@input-color                 : @text-color;
-@input-border-color          : @border-color-base;
-@input-bg                    : #fff;
-@input-addon-bg              : @background-color-light;
-@input-hover-border-color    : @primary-color;
-@input-disabled-bg           : @disabled-bg;
-@input-outline-offset        : 0 0;
-
-// Tooltip
-// ---
-//* Tooltip max width
-@tooltip-max-width: 250px;
-//** Tooltip text color
-@tooltip-color: #fff;
-//** Tooltip background color
-@tooltip-bg: rgba(0, 0, 0, .75);
-//** Tooltip arrow width
-@tooltip-arrow-width: 5px;
-//** Tooltip distance with trigger
-@tooltip-distance: @tooltip-arrow-width - 1px + 4px;
-//** Tooltip arrow color
-@tooltip-arrow-color: @tooltip-bg;
-
-// Popover
-// ---
-//** Popover body background color
-@popover-bg: #fff;
-//** Popover text color
-@popover-color: @text-color;
-//** Popover maximum width
-@popover-min-width: 177px;
-//** Popover arrow width
-@popover-arrow-width: 6px;
-//** Popover arrow color
-@popover-arrow-color: @popover-bg;
-//** Popover outer arrow width
-//** Popover outer arrow color
-@popover-arrow-outer-color: @popover-bg;
-//** Popover distance with trigger
-@popover-distance: @popover-arrow-width + 4px;
-
-// Modal
-// --
-@modal-mask-bg: rgba(0, 0, 0, 0.65);
-
-// Progress
-// --
-@progress-default-color: @processing-color;
-@progress-remaining-color: @background-color-base;
-@progress-text-color: @text-color;
-
-// Menu
-// ---
-@menu-inline-toplevel-item-height: 40px;
-@menu-item-height: 40px;
-@menu-collapsed-width: 80px;
-@menu-bg: @component-background;
-@menu-item-color: @text-color;
-@menu-highlight-color: @primary-color;
-@menu-item-active-bg: @item-active-bg;
-@menu-item-active-border-width: 3px;
-@menu-item-group-title-color: @text-color-secondary;
-// dark theme
-@menu-dark-color: @text-color-secondary-dark;
-@menu-dark-bg: @layout-header-background;
-@menu-dark-arrow-color: #fff;
-@menu-dark-submenu-bg: #000c17;
-@menu-dark-highlight-color: #fff;
-@menu-dark-item-active-bg: @primary-color;
-
-// Spin
-// ---
-@spin-dot-size-sm: 14px;
-@spin-dot-size: 20px;
-@spin-dot-size-lg: 32px;
-
-// Table
-// --
-@table-header-bg: @background-color-light;
-@table-header-color: @heading-color;
-@table-header-sort-bg: @background-color-base;
-@table-body-sort-bg: rgba(0, 0, 0, .01);
-@table-row-hover-bg: @primary-1;
-@table-selected-row-bg: #fafafa;
-@table-expanded-row-bg: #fbfbfb;
-@table-padding-vertical: 16px;
-@table-padding-horizontal: 16px;
-
-// Tag
-// --
-@tag-default-bg: @background-color-light;
-@tag-default-color: @text-color;
-@tag-font-size: @font-size-sm;
-
-// TimePicker
-// ---
-@time-picker-panel-column-width: 56px;
-@time-picker-panel-width: @time-picker-panel-column-width * 3;
-@time-picker-selected-bg: @background-color-base;
-
-// Carousel
-// ---
-@carousel-dot-width: 16px;
-@carousel-dot-height: 3px;
-@carousel-dot-active-width: 24px;
-
-// Badge
-// ---
-@badge-height: 20px;
-@badge-dot-size: 6px;
-@badge-font-size: @font-size-sm;
-@badge-font-weight: normal;
-@badge-status-size: 6px;
-
-// Rate
-// ---
-@rate-star-color: @yellow-6;
-@rate-star-bg: @border-color-split;
-
-// Card
-// ---
-@card-head-color: @heading-color;
-@card-head-background: transparent;
-@card-head-padding: 16px;
-@card-inner-head-padding: 12px;
-@card-padding-base: 24px;
-@card-padding-wider: 32px;
-@card-actions-background: @background-color-light;
-@card-shadow: 0 2px 8px rgba(0, 0, 0, .09);
-
-// Tabs
-// ---
-@tabs-card-head-background: @background-color-light;
-@tabs-card-height: 40px;
-@tabs-card-active-color: @primary-color;
-@tabs-title-font-size: @font-size-base;
-@tabs-title-font-size-lg: @font-size-lg;
-@tabs-title-font-size-sm: @font-size-base;
-@tabs-ink-bar-color: @primary-color;
-@tabs-bar-margin: 0 0 16px 0;
-@tabs-horizontal-margin: 0 32px 0 0;
-@tabs-horizontal-padding: 12px 16px;
-@tabs-vertical-padding: 8px 24px;
-@tabs-vertical-margin: 0 0 16px 0;
-@tabs-scrolling-size: 32px;
-@tabs-highlight-color: @primary-color;
-@tabs-hover-color: @primary-5;
-@tabs-active-color: @primary-7;
-
-// BackTop
-// ---
-@back-top-color: #fff;
-@back-top-bg: @text-color-secondary;
-@back-top-hover-bg: @text-color;
-
-// Avatar
-// ---
-@avatar-size-base: 32px;
-@avatar-size-lg: 40px;
-@avatar-size-sm: 24px;
-@avatar-font-size-base: 18px;
-@avatar-font-size-lg: 24px;
-@avatar-font-size-sm: 14px;
-@avatar-bg: #ccc;
-@avatar-color: #fff;
-@avatar-border-radius: @border-radius-base;
-
-// Switch
-// ---
-@switch-height: 22px;
-@switch-sm-height: 16px;
-@switch-sm-checked-margin-left: -(@switch-sm-height - 3px);
-@switch-disabled-opacity: 0.4;
-@switch-color: @primary-color;
-
-// Pagination
-// ---
-@pagination-item-size: 32px;
-@pagination-item-size-sm: 24px;
-@pagination-font-family: Arial;
-@pagination-font-weight-active: 500;
-
-// Breadcrumb
-// ---
-@breadcrumb-base-color:        @text-color-secondary;
-@breadcrumb-last-item-color:   @text-color;
-@breadcrumb-font-size:         @font-size-base;
-@breadcrumb-icon-font-size:    @font-size-base;
-@breadcrumb-link-color:        @text-color-secondary;
-@breadcrumb-link-color-hover:  @primary-5;
-@breadcrumb-separator-color:   @text-color-secondary;
-@breadcrumb-separator-margin:  0 @padding-xs;
-
-// Slider
-// ---
-@slider-margin:                       14px 6px 10px;
-@slider-rail-background-color:        @background-color-base;
-@slider-rail-background-color-hover:  #e1e1e1;
-@slider-track-background-color:       @primary-3;
-@slider-track-background-color-hover: @primary-4;
-@slider-handle-color:                 @primary-3;
-@slider-handle-color-hover:           @primary-4;
-@slider-handle-color-focus:           tint(@primary-color, 20%);
-@slider-handle-color-focus-shadow:    tint(@primary-color, 50%);
-@slider-handle-color-tooltip-open:    @primary-color;
-@slider-dot-border-color:             @border-color-split;
-@slider-dot-border-color-active:      tint(@primary-color, 50%);
-@slider-disabled-color:               @disabled-color;
-@slider-disabled-background-color:    @component-background;
-
-// Tree
-// ---
-@tree-title-height:                   24px;
-@tree-child-padding:                  18px;
-@tree-directory-selected-color:       #fff;
-@tree-directory-selected-bg:          @primary-color;
-
-// Collapse
-// ---
-@collapse-header-padding:             12px 0 12px 40px;
-@collapse-header-bg:                  @background-color-light;
-@collapse-content-padding:            @padding-md;
-@collapse-content-bg:                 @component-background;
-
-// Skeleton
-// ---
-@skeleton-color:                      #f2f2f2;
-
-// Transfer
-// ---
-@transfer-disabled-bg:                @disabled-bg;
-
-// Message
-// ---
-@message-notice-content-padding:      10px 16px;
-
-// Motion
-// ---
-@wave-animation-width: 6px;
-
-// Alert
-// ---
-@alert-success-border-color: ~`colorPalette("@{success-color}", 3)`;
-@alert-success-bg-color: ~`colorPalette("@{success-color}", 1)`;
-@alert-success-icon-color: @success-color;
-@alert-info-border-color: ~`colorPalette("@{info-color}", 3)`;
-@alert-info-bg-color: ~`colorPalette("@{info-color}", 1)`;
-@alert-info-icon-color: @info-color;
-@alert-warning-border-color: ~`colorPalette("@{warning-color}", 3)`;
-@alert-warning-bg-color: ~`colorPalette("@{warning-color}", 1)`;
-@alert-warning-icon-color: @warning-color;
-@alert-error-border-color: ~`colorPalette("@{error-color}", 3)`;
-@alert-error-bg-color: ~`colorPalette("@{error-color}", 1)`;
-@alert-error-icon-color: @error-color;
-
-// List
-// ---
-@list-empty-text-padding:                    @padding-md;
-@list-item-padding:                          @padding-sm 0;
-@list-item-content-margin:                   0 0 @padding-md 0;
-@list-item-meta-margin-bottom:               @padding-md;
-@list-item-meta-avatar-margin-right:         @padding-md;
-@list-item-meta-title-margin-bottom:         @padding-sm;
-
-// Menu
-@menu-dark-item-selected-bg: @menu-dark-item-active-bg;
-
-// Tabs
-@tab-bar-margin: @tabs-bar-margin;
-@tab-horizontal-margin: @tabs-horizontal-margin;
-@tab-vertical-margin: @tabs-vertical-margin;
-@tab-horizontal-padding: @tabs-horizontal-padding;
-@tab-vertical-padding: @tabs-vertical-padding;
-@tab-scrolling-size: @tabs-scrolling-size;
-@tab-highlight-color: @tabs-highlight-color;
-@tab-hover-color: @tabs-hover-color;
-@tab-active-color: @tabs-active-color;
-@tabs-ink-bar-bg-color: @tabs-ink-bar-color;
-
-.listContent .extra {
-  color: rgba(0, 0, 0, 0.45);
-}
-.listContent .extra > em {
-  color: rgba(0, 0, 0, 0.25);
-}
-.avatarItem :global .ant-avatar {
-  border: 1px solid #fff;
-}
-.chartCard .avatar img {
-  border-radius: 100%;
-}
-.chartCard .meta {
-  color: rgba(0, 0, 0, 0.45);
-}
-.chartCard .total {
-  color: rgba(0, 0, 0, 0.85);
-}
-.chartCard .footer {
-  border-top: 1px solid #e8e8e8;
-}
-.field span:last-child {
-  color: rgba(0, 0, 0, 0.85);
-}
-.miniProgress .progressWrap {
-  background-color: #f5f5f5;
-}
-.miniProgress .progress {
-  border-radius: 1px 0 0 1px;
-  background-color: @primary-color;
-}
-.miniProgress .target span {
-  border-radius: 100px;
-}
-.pie .dot {
-  border-radius: 8px;
-}
-.pie .line {
-  background-color: #e8e8e8;
-}
-.pie .legendTitle {
-  color: rgba(0, 0, 0, 0.65);
-}
-.pie .percent {
-  color: rgba(0, 0, 0, 0.45);
-}
-.pie .total > h4 {
-  color: rgba(0, 0, 0, 0.45);
-}
-.pie .total > p {
-  color: rgba(0, 0, 0, 0.85);
-}
-.radar .legend .legendItem {
-  color: rgba(0, 0, 0, 0.45);
-}
-.radar .legend .legendItem h6 {
-  color: rgba(0, 0, 0, 0.85);
-}
-.radar .legend .legendItem:after {
-  background-color: #e8e8e8;
-}
-.radar .legend .dot {
-  border-radius: 6px;
-}
-
-.timelineChart {
-  background: #fff;
-}
-.waterWave .text span {
-  color: rgba(0, 0, 0, 0.45);
-}
-.waterWave .text h4 {
-  color: rgba(0, 0, 0, 0.85);
-}
-.descriptionList .title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.descriptionList .term {
-  color: rgba(0, 0, 0, 0.85);
-}
-.descriptionList .detail {
-  color: rgba(0, 0, 0, 0.65);
-}
-.descriptionList.small .title {
-  color: rgba(0, 0, 0, 0.65);
-}
-.linkGroup > a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.linkGroup > a:hover {
-  color: @primary-color;
-}
-.lines .shadow {
-  color: transparent;
-}
-.exception .imgEle {
-  background-repeat: no-repeat;
-  background-position: 50% 50%;
-  background-size: contain;
-}
-.exception .content h1 {
-  color: #434e59;
-}
-.exception .content .desc {
-  color: rgba(0, 0, 0, 0.45);
-}
-.toolbar {
-  box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.03);
-  background: #fff;
-  border-top: 1px solid #e8e8e8;
-}
-.globalFooter .links a {
-  color: rgba(0, 0, 0, 0.45);
-}
-.globalFooter .links a:hover {
-  color: rgba(0, 0, 0, 0.65);
-}
-.globalFooter .copyright {
-  color: rgba(0, 0, 0, 0.45);
-}
-.header {
-  background: #fff;
-  box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
-}
-i.trigger:hover {
-  background: rgba(0, 0, 0, 0.025);
-}
-.right .action > i {
-  color: rgba(0, 0, 0, 0.65);
-}
-.right .action:hover {
-  background: rgba(0, 0, 0, 0.025);
-}
-:global(.right .action.ant-popover-open) {
-  background: rgba(0, 0, 0, 0.025);
-}
-.right .search:hover {
-  background: transparent;
-}
-.right .account .avatar {
-  color: @primary-color;
-  background: rgba(255, 255, 255, 0.85);
-}
-.dark .action {
-  color: rgba(255, 255, 255, 0.85);
-}
-.dark .action > i {
-  color: rgba(255, 255, 255, 0.85);
-}
-.dark .action:hover,
-.dark .action:global(.ant-popover-open) {
-  background: @primary-color;
-}
-.dark .action :global(.ant-badge) {
-  color: rgba(255, 255, 255, 0.85);
-}
-.headerSearch .input {
-  background: transparent;
-  border-radius: 0;
-}
-.headerSearch .input :global(.ant-select-selection) {
-  background: transparent;
-}
-.headerSearch .input input {
-  border: 0;
-  box-shadow: none !important;
-}
-.headerSearch .input,
-.headerSearch .input:hover,
-.headerSearch .input:focus {
-  border-bottom: 1px solid #d9d9d9;
-}
-.login :global .ant-tabs .ant-tabs-bar {
-  border-bottom: 0;
-}
-.login .icon {
-  color: rgba(0, 0, 0, 0.2);
-}
-.login .icon:hover {
-  color: @primary-color;
-}
-.login .prefixIcon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.list .item .avatar {
-  background: #fff;
-}
-.list .item:last-child {
-  border-bottom: 0;
-}
-.list .item:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.list .item .extra {
-  color: rgba(0, 0, 0, 0.45);
-}
-.notFound {
-  color: rgba(0, 0, 0, 0.45);
-}
-.clear {
-  color: rgba(0, 0, 0, 0.65);
-  border-radius: 0 0 4px 4px;
-  border-top: 1px solid #e8e8e8;
-}
-.clear:hover {
-  color: rgba(0, 0, 0, 0.85);
-}
-.numberInfo .suffix {
-  color: rgba(0, 0, 0, 0.65);
-}
-.numberInfo .numberInfoTitle {
-  color: rgba(0, 0, 0, 0.65);
-}
-.numberInfo .numberInfoSubTitle {
-  color: rgba(0, 0, 0, 0.45);
-}
-.numberInfo .numberInfoValue > span {
-  color: rgba(0, 0, 0, 0.85);
-}
-.numberInfo .numberInfoValue .subTotal {
-  color: rgba(0, 0, 0, 0.45);
-}
-.numberInfo .numberInfoValue .subTotal :global .anticon-caret-up {
-  color: #f5222d;
-}
-.numberInfo .numberInfoValue .subTotal :global .anticon-caret-down {
-  color: #52c41a;
-}
-.numberInfolight .numberInfoValue > span {
-  color: rgba(0, 0, 0, 0.65);
-}
-.pageHeader {
-  background: #fff;
-  border-bottom: 1px solid #e8e8e8;
-}
-.pageHeader .tabs :global .ant-tabs-bar {
-  border-bottom: 1px solid #e8e8e8;
-}
-.pageHeader .logo > img {
-  border-radius: 4px;
-}
-.pageHeader .title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.result .icon > .success {
-  color: #52c41a;
-}
-.result .icon > .error {
-  color: #f5222d;
-}
-.result .title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.result .description {
-  color: rgba(0, 0, 0, 0.45);
-}
-.result .extra {
-  background: #fafafa;
-  border-radius: 2px;
-}
-.blockCheckbox .item {
-  border-radius: 4px;
-}
-.blockCheckbox .selectIcon {
-  color: @primary-color;
-}
-.color_block {
-  border-radius: 4px;
-}
-.title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.handle {
-  background: @primary-color;
-  border-radius: 4px 0 0 4px;
-}
-.setting-drawer-index-handle {
-  /* 暂时不知道放哪解决 */
-  background: @primary-color !important;
-}
-.themeColor .title {
-  color: rgba(0, 0, 0, 0.65);
-}
-.themeColor .colorBlock {
-  border-radius: 2px;
-  color: #fff;
-}
-.logo {
-}
-.logo h1 {
-  color: white;
-}
-.sider {
-  box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
-}
-.sider.light {
-  box-shadow: 2px 0 8px 0 rgba(29, 35, 41, 0.05);
-  background-color: white;
-}
-.sider.light .logo {
-  background: white;
-  box-shadow: 1px 1px 0 0 #e8e8e8;
-}
-.sider.light .logo h1 {
-  color: @primary-color;
-}
-.sider.light :global(.ant-menu-light) {
-  border-right-color: transparent;
-}
-:global .drawer .drawer-content {
-  background: #001529;
-}
-.standardFormRow {
-  border-bottom: 1px dashed #e8e8e8;
-}
-.standardFormRow :global .ant-form-item-label label {
-  color: rgba(0, 0, 0, 0.65);
-}
-.standardFormRow .label {
-  color: rgba(0, 0, 0, 0.85);
-}
-.standardFormRowLast {
-  border: none;
-}
-
-.head {
-  box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
-}
-.head.light {
-  background-color: #fff;
-}
-.logo h1 {
-  color: #fff;
-}
-.light h1 {
-  color: #002140;
-}
-.trendItem .up {
-  color: #f5222d;
-}
-.trendItem .down {
-  color: #52c41a;
-}
-.trendItem.trendItemGrey .up,
-.trendItem.trendItemGrey .down {
-  color: rgba(0, 0, 0, 0.65);
-}
-.trendItem.reverseColor .up {
-  color: #52c41a;
-}
-.trendItem.reverseColor .down {
-  color: #f5222d;
-}
-.container {
-  background: #f0f2f5;
-}
-.title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.desc {
-  color: rgba(0, 0, 0, 0.45);
-}
-a.listItemMetaTitle {
-  color: rgba(0, 0, 0, 0.85);
-}
-.baseView .right .avatar_title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.main {
-  background-color: #fff;
-}
-.main .leftmenu {
-  border-right: 1px solid #e8e8e8;
-}
-.main .leftmenu :global .ant-menu-inline {
-  border: none;
-}
-.main .right .title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.main :global .ant-list-split .ant-list-item:last-child {
-  border-bottom: 1px solid #e8e8e8;
-}
-:global .ant-list-item-meta .taobao {
-  color: #ff4000;
-  border-radius: 4px;
-}
-:global .ant-list-item-meta .dingding {
-  background-color: #2eabff;
-  color: #fff;
-  border-radius: 4px;
-}
-:global .ant-list-item-meta .alipay {
-  color: #2eabff;
-  border-radius: 4px;
-}
-:global font.strong {
-  color: #52c41a;
-}
-:global font.medium {
-  color: #faad14;
-}
-:global font.weak {
-  color: #f5222d;
-}
-
-
-
-
-.trigger {
-  background: 'red';
-}
-.desc {
-  color: rgba(0, 0, 0, 0.45);
-}
-.desc h3 {
-  color: rgba(0, 0, 0, 0.45);
-}
-.desc h4 {
-  color: rgba(0, 0, 0, 0.45);
-}
-.information .label {
-  color: rgba(0, 0, 0, 0.85);
-}
-.errorIcon {
-  color: #f5222d;
-}
-.errorListItem {
-  border-bottom: 1px solid #e8e8e8;
-}
-.errorListItem:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.errorListItem:last-child {
-  border: 0;
-}
-.errorListItem .errorIcon {
-  color: #f5222d;
-}
-.errorListItem .errorField {
-  color: rgba(0, 0, 0, 0.45);
-}
-.optional {
-  color: rgba(0, 0, 0, 0.45);
-}
-a.listItemMetaTitle {
-  color: rgba(0, 0, 0, 0.85);
-}
-.noData {
-  color: rgba(0, 0, 0, 0.25);
-}
-.heading {
-  color: rgba(0, 0, 0, 0.85);
-}
-.textSecondary {
-  color: rgba(0, 0, 0, 0.45);
-}
-.title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.main .icon {
-  color: rgba(0, 0, 0, 0.2);
-}
-.main .icon:hover {
-  color: @primary-color;
-}
-.success {
-  color: #52c41a;
-}
-.warning {
-  color: #faad14;
-}
-.error {
-  color: #f5222d;
-}
-.progress-pass > .progress :global .ant-progress-bg {
-  background-color: #faad14;
-}
-html {
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  color: rgba(0, 0, 0, 0.85);
-}
-abbr[title],
-abbr[data-original-title] {
-  border-bottom: 0;
-}
-a {
-  color: @primary-color;
-  background-color: transparent;
-}
-a:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-a:active {
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-a[disabled] {
-  color: rgba(0, 0, 0, 0.25);
-}
-img {
-  border-style: none;
-}
-table {
-  border-collapse: collapse;
-}
-caption {
-  color: rgba(0, 0, 0, 0.45);
-}
-input,
-button,
-select,
-optgroup,
-textarea {
-  color: inherit;
-}
-button::-moz-focus-inner,
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner {
-  border-style: none;
-}
-fieldset {
-  border: 0;
-}
-legend {
-  color: inherit;
-}
-mark {
-  background-color: #feffe6;
-}
-::selection {
-  background: @primary-color;
-  color: #fff;
-}
-[ant-click-animating-without-extra-node]:after,
-.ant-click-animating-node {
-  border-radius: inherit;
-  border: 0 solid @primary-color;
-}
-.ant-alert {
-  color: rgba(0, 0, 0, 0.65);
-  border-radius: 4px;
-}
-.ant-alert-success {
-  border: 1px solid #b7eb8f;
-  background-color: #f6ffed;
-}
-.ant-alert-success .ant-alert-icon {
-  color: #52c41a;
-}
-.ant-alert-info {
-  border: 1px solid color(~`colorPalette("@{primary-color}", 3)`);
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-alert-info .ant-alert-icon {
-  color: @primary-color;
-}
-.ant-alert-warning {
-  border: 1px solid #ffe58f;
-  background-color: #fffbe6;
-}
-.ant-alert-warning .ant-alert-icon {
-  color: #faad14;
-}
-.ant-alert-error {
-  border: 1px solid #ffa39e;
-  background-color: #fff1f0;
-}
-.ant-alert-error .ant-alert-icon {
-  color: #f5222d;
-}
-.ant-alert-close-icon .anticon-close {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-alert-close-icon .anticon-close:hover {
-  color: #404040;
-}
-.ant-alert-with-description {
-  border-radius: 4px;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-alert-with-description .ant-alert-message {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-alert-banner {
-  border-radius: 0;
-  border: 0;
-}
-.ant-anchor {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-anchor-wrapper {
-  background-color: #fff;
-}
-.ant-anchor-ink:before {
-  background-color: #e8e8e8;
-}
-.ant-anchor-ink-ball {
-  border-radius: 8px;
-  border: 2px solid @primary-color;
-  background-color: #fff;
-}
-.ant-anchor-link-title {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-anchor-link-active > .ant-anchor-link-title {
-  color: @primary-color;
-}
-.ant-select-auto-complete {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-auto-complete.ant-select .ant-select-selection {
-  border: 0;
-  box-shadow: none;
-}
-.ant-select-auto-complete.ant-select .ant-input {
-  background: transparent;
-  border-width: 1px;
-}
-.ant-select-auto-complete.ant-select .ant-input:focus,
-.ant-select-auto-complete.ant-select .ant-input:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-avatar {
-  color: rgba(0, 0, 0, 0.65);
-  background: #ccc;
-  color: #fff;
-  border-radius: 50%;
-}
-.ant-avatar-image {
-  background: transparent;
-}
-.ant-avatar-lg {
-  border-radius: 50%;
-}
-.ant-avatar-sm {
-  border-radius: 50%;
-}
-.ant-avatar-square {
-  border-radius: 4px;
-}
-.ant-back-top {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-back-top-content {
-  border-radius: 20px;
-  background-color: rgba(0, 0, 0, 0.45);
-  color: #fff;
-}
-.ant-back-top-content:hover {
-  background-color: rgba(0, 0, 0, 0.65);
-}
-.ant-back-top-icon {
-  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCX [...]
-}
-.ant-badge {
-  color: rgba(0, 0, 0, 0.65);
-  color: unset;
-}
-.ant-badge-count {
-  border-radius: 10px;
-  background: #f5222d;
-  color: #fff;
-  box-shadow: 0 0 0 1px #fff;
-}
-.ant-badge-count a,
-.ant-badge-count a:hover {
-  color: #fff;
-}
-.ant-badge-dot {
-  border-radius: 100%;
-  background: #f5222d;
-  box-shadow: 0 0 0 1px #fff;
-}
-.ant-badge-status-dot {
-  border-radius: 50%;
-}
-.ant-badge-status-success {
-  background-color: #52c41a;
-}
-.ant-badge-status-processing {
-  background-color: @primary-color;
-}
-.ant-badge-status-processing:after {
-  border-radius: 50%;
-  border: 1px solid @primary-color;
-}
-.ant-badge-status-default {
-  background-color: #d9d9d9;
-}
-.ant-badge-status-error {
-  background-color: #f5222d;
-}
-.ant-badge-status-warning {
-  background-color: #faad14;
-}
-.ant-badge-status-text {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-breadcrumb {
-  color: rgba(0, 0, 0, 0.65);
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-breadcrumb a {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-breadcrumb a:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-breadcrumb > span:last-child {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-breadcrumb-separator {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-btn {
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  border-color: #d9d9d9;
-}
-.ant-btn:not([disabled]):active {
-  box-shadow: none;
-}
-.ant-btn-lg {
-  border-radius: 4px;
-}
-.ant-btn-sm {
-  border-radius: 4px;
-}
-.ant-btn > a:only-child {
-  color: currentColor;
-}
-.ant-btn > a:only-child:after {
-  background: transparent;
-}
-.ant-btn:hover,
-.ant-btn:focus {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-  background-color: #fff;
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn:hover > a:only-child,
-.ant-btn:focus > a:only-child {
-  color: currentColor;
-}
-.ant-btn:hover > a:only-child:after,
-.ant-btn:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-btn:active,
-.ant-btn.active {
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-  background-color: #fff;
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-btn:active > a:only-child,
-.ant-btn.active > a:only-child {
-  color: currentColor;
-}
-.ant-btn:active > a:only-child:after,
-.ant-btn.active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn.disabled,
-.ant-btn[disabled],
-.ant-btn.disabled:hover,
-.ant-btn[disabled]:hover,
-.ant-btn.disabled:focus,
-.ant-btn[disabled]:focus,
-.ant-btn.disabled:active,
-.ant-btn[disabled]:active,
-.ant-btn.disabled.active,
-.ant-btn[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-btn.disabled > a:only-child,
-.ant-btn[disabled] > a:only-child,
-.ant-btn.disabled:hover > a:only-child,
-.ant-btn[disabled]:hover > a:only-child,
-.ant-btn.disabled:focus > a:only-child,
-.ant-btn[disabled]:focus > a:only-child,
-.ant-btn.disabled:active > a:only-child,
-.ant-btn[disabled]:active > a:only-child,
-.ant-btn.disabled.active > a:only-child,
-.ant-btn[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-btn.disabled > a:only-child:after,
-.ant-btn[disabled] > a:only-child:after,
-.ant-btn.disabled:hover > a:only-child:after,
-.ant-btn[disabled]:hover > a:only-child:after,
-.ant-btn.disabled:focus > a:only-child:after,
-.ant-btn[disabled]:focus > a:only-child:after,
-.ant-btn.disabled:active > a:only-child:after,
-.ant-btn[disabled]:active > a:only-child:after,
-.ant-btn.disabled.active > a:only-child:after,
-.ant-btn[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn:hover,
-.ant-btn:focus,
-.ant-btn:active,
-.ant-btn.active {
-  background: #fff;
-}
-.ant-btn-primary {
-  color: #fff;
-  background-color: @primary-color;
-  border-color: @primary-color;
-  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035);
-}
-.ant-btn-primary > a:only-child {
-  color: currentColor;
-}
-.ant-btn-primary > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-primary:hover,
-.ant-btn-primary:focus {
-  color: #fff;
-  background-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn-primary:hover > a:only-child,
-.ant-btn-primary:focus > a:only-child {
-  color: currentColor;
-}
-.ant-btn-primary:hover > a:only-child:after,
-.ant-btn-primary:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-primary:active,
-.ant-btn-primary.active {
-  color: #fff;
-  background-color: color(~`colorPalette("@{primary-color}", 7)`);
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-btn-primary:active > a:only-child,
-.ant-btn-primary.active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-primary:active > a:only-child:after,
-.ant-btn-primary.active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-primary.disabled,
-.ant-btn-primary[disabled],
-.ant-btn-primary.disabled:hover,
-.ant-btn-primary[disabled]:hover,
-.ant-btn-primary.disabled:focus,
-.ant-btn-primary[disabled]:focus,
-.ant-btn-primary.disabled:active,
-.ant-btn-primary[disabled]:active,
-.ant-btn-primary.disabled.active,
-.ant-btn-primary[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-btn-primary.disabled > a:only-child,
-.ant-btn-primary[disabled] > a:only-child,
-.ant-btn-primary.disabled:hover > a:only-child,
-.ant-btn-primary[disabled]:hover > a:only-child,
-.ant-btn-primary.disabled:focus > a:only-child,
-.ant-btn-primary[disabled]:focus > a:only-child,
-.ant-btn-primary.disabled:active > a:only-child,
-.ant-btn-primary[disabled]:active > a:only-child,
-.ant-btn-primary.disabled.active > a:only-child,
-.ant-btn-primary[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-primary.disabled > a:only-child:after,
-.ant-btn-primary[disabled] > a:only-child:after,
-.ant-btn-primary.disabled:hover > a:only-child:after,
-.ant-btn-primary[disabled]:hover > a:only-child:after,
-.ant-btn-primary.disabled:focus > a:only-child:after,
-.ant-btn-primary[disabled]:focus > a:only-child:after,
-.ant-btn-primary.disabled:active > a:only-child:after,
-.ant-btn-primary[disabled]:active > a:only-child:after,
-.ant-btn-primary.disabled.active > a:only-child:after,
-.ant-btn-primary[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {
-  border-right-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-left-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {
-  border-color: #d9d9d9;
-}
-.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {
-  border-right-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {
-  border-right-color: #d9d9d9;
-}
-.ant-btn-group .ant-btn-primary:last-child:not(:first-child),
-.ant-btn-group .ant-btn-primary + .ant-btn-primary {
-  border-left-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],
-.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {
-  border-left-color: #d9d9d9;
-}
-.ant-btn-ghost {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: transparent;
-  border-color: #d9d9d9;
-}
-.ant-btn-ghost > a:only-child {
-  color: currentColor;
-}
-.ant-btn-ghost > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-ghost:hover,
-.ant-btn-ghost:focus {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-  background-color: transparent;
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn-ghost:hover > a:only-child,
-.ant-btn-ghost:focus > a:only-child {
-  color: currentColor;
-}
-.ant-btn-ghost:hover > a:only-child:after,
-.ant-btn-ghost:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-ghost:active,
-.ant-btn-ghost.active {
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-  background-color: transparent;
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-btn-ghost:active > a:only-child,
-.ant-btn-ghost.active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-ghost:active > a:only-child:after,
-.ant-btn-ghost.active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-ghost.disabled,
-.ant-btn-ghost[disabled],
-.ant-btn-ghost.disabled:hover,
-.ant-btn-ghost[disabled]:hover,
-.ant-btn-ghost.disabled:focus,
-.ant-btn-ghost[disabled]:focus,
-.ant-btn-ghost.disabled:active,
-.ant-btn-ghost[disabled]:active,
-.ant-btn-ghost.disabled.active,
-.ant-btn-ghost[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-btn-ghost.disabled > a:only-child,
-.ant-btn-ghost[disabled] > a:only-child,
-.ant-btn-ghost.disabled:hover > a:only-child,
-.ant-btn-ghost[disabled]:hover > a:only-child,
-.ant-btn-ghost.disabled:focus > a:only-child,
-.ant-btn-ghost[disabled]:focus > a:only-child,
-.ant-btn-ghost.disabled:active > a:only-child,
-.ant-btn-ghost[disabled]:active > a:only-child,
-.ant-btn-ghost.disabled.active > a:only-child,
-.ant-btn-ghost[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-ghost.disabled > a:only-child:after,
-.ant-btn-ghost[disabled] > a:only-child:after,
-.ant-btn-ghost.disabled:hover > a:only-child:after,
-.ant-btn-ghost[disabled]:hover > a:only-child:after,
-.ant-btn-ghost.disabled:focus > a:only-child:after,
-.ant-btn-ghost[disabled]:focus > a:only-child:after,
-.ant-btn-ghost.disabled:active > a:only-child:after,
-.ant-btn-ghost[disabled]:active > a:only-child:after,
-.ant-btn-ghost.disabled.active > a:only-child:after,
-.ant-btn-ghost[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-dashed {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  border-color: #d9d9d9;
-  border-style: dashed;
-}
-.ant-btn-dashed > a:only-child {
-  color: currentColor;
-}
-.ant-btn-dashed > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-dashed:hover,
-.ant-btn-dashed:focus {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-  background-color: #fff;
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn-dashed:hover > a:only-child,
-.ant-btn-dashed:focus > a:only-child {
-  color: currentColor;
-}
-.ant-btn-dashed:hover > a:only-child:after,
-.ant-btn-dashed:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-dashed:active,
-.ant-btn-dashed.active {
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-  background-color: #fff;
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-btn-dashed:active > a:only-child,
-.ant-btn-dashed.active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-dashed:active > a:only-child:after,
-.ant-btn-dashed.active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-dashed.disabled,
-.ant-btn-dashed[disabled],
-.ant-btn-dashed.disabled:hover,
-.ant-btn-dashed[disabled]:hover,
-.ant-btn-dashed.disabled:focus,
-.ant-btn-dashed[disabled]:focus,
-.ant-btn-dashed.disabled:active,
-.ant-btn-dashed[disabled]:active,
-.ant-btn-dashed.disabled.active,
-.ant-btn-dashed[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-btn-dashed.disabled > a:only-child,
-.ant-btn-dashed[disabled] > a:only-child,
-.ant-btn-dashed.disabled:hover > a:only-child,
-.ant-btn-dashed[disabled]:hover > a:only-child,
-.ant-btn-dashed.disabled:focus > a:only-child,
-.ant-btn-dashed[disabled]:focus > a:only-child,
-.ant-btn-dashed.disabled:active > a:only-child,
-.ant-btn-dashed[disabled]:active > a:only-child,
-.ant-btn-dashed.disabled.active > a:only-child,
-.ant-btn-dashed[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-dashed.disabled > a:only-child:after,
-.ant-btn-dashed[disabled] > a:only-child:after,
-.ant-btn-dashed.disabled:hover > a:only-child:after,
-.ant-btn-dashed[disabled]:hover > a:only-child:after,
-.ant-btn-dashed.disabled:focus > a:only-child:after,
-.ant-btn-dashed[disabled]:focus > a:only-child:after,
-.ant-btn-dashed.disabled:active > a:only-child:after,
-.ant-btn-dashed[disabled]:active > a:only-child:after,
-.ant-btn-dashed.disabled.active > a:only-child:after,
-.ant-btn-dashed[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-danger {
-  color: #f5222d;
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-}
-.ant-btn-danger > a:only-child {
-  color: currentColor;
-}
-.ant-btn-danger > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-danger:hover {
-  color: #fff;
-  background-color: #ff4d4f;
-  border-color: #ff4d4f;
-}
-.ant-btn-danger:hover > a:only-child {
-  color: currentColor;
-}
-.ant-btn-danger:hover > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-danger:focus {
-  color: #ff4d4f;
-  background-color: #fff;
-  border-color: #ff4d4f;
-}
-.ant-btn-danger:focus > a:only-child {
-  color: currentColor;
-}
-.ant-btn-danger:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-danger:active,
-.ant-btn-danger.active {
-  color: #fff;
-  background-color: #cf1322;
-  border-color: #cf1322;
-}
-.ant-btn-danger:active > a:only-child,
-.ant-btn-danger.active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-danger:active > a:only-child:after,
-.ant-btn-danger.active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-danger.disabled,
-.ant-btn-danger[disabled],
-.ant-btn-danger.disabled:hover,
-.ant-btn-danger[disabled]:hover,
-.ant-btn-danger.disabled:focus,
-.ant-btn-danger[disabled]:focus,
-.ant-btn-danger.disabled:active,
-.ant-btn-danger[disabled]:active,
-.ant-btn-danger.disabled.active,
-.ant-btn-danger[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-btn-danger.disabled > a:only-child,
-.ant-btn-danger[disabled] > a:only-child,
-.ant-btn-danger.disabled:hover > a:only-child,
-.ant-btn-danger[disabled]:hover > a:only-child,
-.ant-btn-danger.disabled:focus > a:only-child,
-.ant-btn-danger[disabled]:focus > a:only-child,
-.ant-btn-danger.disabled:active > a:only-child,
-.ant-btn-danger[disabled]:active > a:only-child,
-.ant-btn-danger.disabled.active > a:only-child,
-.ant-btn-danger[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-danger.disabled > a:only-child:after,
-.ant-btn-danger[disabled] > a:only-child:after,
-.ant-btn-danger.disabled:hover > a:only-child:after,
-.ant-btn-danger[disabled]:hover > a:only-child:after,
-.ant-btn-danger.disabled:focus > a:only-child:after,
-.ant-btn-danger[disabled]:focus > a:only-child:after,
-.ant-btn-danger.disabled:active > a:only-child:after,
-.ant-btn-danger[disabled]:active > a:only-child:after,
-.ant-btn-danger.disabled.active > a:only-child:after,
-.ant-btn-danger[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-circle,
-.ant-btn-circle-outline {
-  border-radius: 50%;
-}
-.ant-btn-circle.ant-btn-lg,
-.ant-btn-circle-outline.ant-btn-lg {
-  border-radius: 50%;
-}
-.ant-btn-circle.ant-btn-sm,
-.ant-btn-circle-outline.ant-btn-sm {
-  border-radius: 50%;
-}
-.ant-btn:before {
-  background: #fff;
-  border-radius: inherit;
-}
-.ant-btn-group-lg > .ant-btn,
-.ant-btn-group-lg > span > .ant-btn {
-  border-radius: 0;
-}
-.ant-btn-group-sm > .ant-btn,
-.ant-btn-group-sm > span > .ant-btn {
-  border-radius: 0;
-}
-.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {
-  border-left-color: transparent;
-}
-.ant-btn-group .ant-btn {
-  border-radius: 0;
-}
-.ant-btn-group > .ant-btn:only-child {
-  border-radius: 4px;
-}
-.ant-btn-group > span:only-child > .ant-btn {
-  border-radius: 4px;
-}
-.ant-btn-group > .ant-btn:first-child:not(:last-child),
-.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {
-  border-bottom-left-radius: 4px;
-  border-top-left-radius: 4px;
-}
-.ant-btn-group > .ant-btn:last-child:not(:first-child),
-.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {
-  border-bottom-right-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.ant-btn-group-sm > .ant-btn:only-child {
-  border-radius: 4px;
-}
-.ant-btn-group-sm > span:only-child > .ant-btn {
-  border-radius: 4px;
-}
-.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),
-.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {
-  border-bottom-left-radius: 4px;
-  border-top-left-radius: 4px;
-}
-.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),
-.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {
-  border-bottom-right-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {
-  border-radius: 0;
-}
-.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0;
-}
-.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-.ant-btn-background-ghost {
-  background: transparent !important;
-  border-color: #fff;
-  color: #fff;
-}
-.ant-btn-background-ghost.ant-btn-primary {
-  color: @primary-color;
-  background-color: transparent;
-  border-color: @primary-color;
-}
-.ant-btn-background-ghost.ant-btn-primary > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-primary > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-background-ghost.ant-btn-primary:hover,
-.ant-btn-background-ghost.ant-btn-primary:focus {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-  background-color: transparent;
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-background-ghost.ant-btn-primary:active,
-.ant-btn-background-ghost.ant-btn-primary.active {
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-  background-color: transparent;
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-btn-background-ghost.ant-btn-primary:active > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary.active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-primary:active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary.active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-background-ghost.ant-btn-primary.disabled,
-.ant-btn-background-ghost.ant-btn-primary[disabled],
-.ant-btn-background-ghost.ant-btn-primary.disabled:hover,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,
-.ant-btn-background-ghost.ant-btn-primary.disabled:focus,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,
-.ant-btn-background-ghost.ant-btn-primary.disabled:active,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:active,
-.ant-btn-background-ghost.ant-btn-primary.disabled.active,
-.ant-btn-background-ghost.ant-btn-primary[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child,
-.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-background-ghost.ant-btn-danger {
-  color: #f5222d;
-  background-color: transparent;
-  border-color: #f5222d;
-}
-.ant-btn-background-ghost.ant-btn-danger > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-danger > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-background-ghost.ant-btn-danger:hover,
-.ant-btn-background-ghost.ant-btn-danger:focus {
-  color: #ff4d4f;
-  background-color: transparent;
-  border-color: #ff4d4f;
-}
-.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-background-ghost.ant-btn-danger:active,
-.ant-btn-background-ghost.ant-btn-danger.active {
-  color: #cf1322;
-  background-color: transparent;
-  border-color: #cf1322;
-}
-.ant-btn-background-ghost.ant-btn-danger:active > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger.active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-danger:active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger.active > a:only-child:after {
-  background: transparent;
-}
-.ant-btn-background-ghost.ant-btn-danger.disabled,
-.ant-btn-background-ghost.ant-btn-danger[disabled],
-.ant-btn-background-ghost.ant-btn-danger.disabled:hover,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,
-.ant-btn-background-ghost.ant-btn-danger.disabled:focus,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,
-.ant-btn-background-ghost.ant-btn-danger.disabled:active,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:active,
-.ant-btn-background-ghost.ant-btn-danger.disabled.active,
-.ant-btn-background-ghost.ant-btn-danger[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child,
-.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child:after,
-.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.christmas.ant-btn-primary:before {
-  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAAXCAYAAABOHMIhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABiZJREFUeNrsWMtPlFcUvzPMwIDysLyRR4uATDHWCiVgSmRlios2DeiiXUFs0nRBd6arxqQhJDapkYXhP4BqDKTQhZaFNQSCaBEVJjwdHsNr5DUMDDPDzPT3u7nTDEgRKrKgc5KT+z3uufec33de99P4fD4RpL2RNgjB3kn35MkTeRERESFiYmLkGBoaKnQ6nWSNRvPPZFxr+vv7k6KioiIdDsfa8vLyQkFBgcP3Bnel3MDAQArWI0eFhISE87nb7bZ7PJ4VvLYuLi5O5+fnu9+kMNfq6+tLjIyMzMY6KeBEbK/XarXReI3lPDZMWcc4v7GxYV1dXR3Jy8ub2E5HPvJ6vRSSDH0ku1wu [...]
-  background-size: 64px;
-}
-.christmas.ant-btn-primary.ant-btn-lg:before {
-  background-size: 72px;
-}
-.christmas.ant-btn-primary.ant-btn-sm:before {
-  background-size: 56px;
-}
-.ant-fullcalendar {
-  color: rgba(0, 0, 0, 0.65);
-  border-top: 1px solid #d9d9d9;
-}
-.ant-fullcalendar table {
-  border-collapse: collapse;
-  background-color: transparent;
-}
-.ant-fullcalendar table,
-.ant-fullcalendar th,
-.ant-fullcalendar td {
-  border: 0;
-}
-.ant-fullcalendar-calendar-table {
-  border-spacing: 0;
-}
-.ant-fullcalendar-value {
-  color: rgba(0, 0, 0, 0.65);
-  border-radius: 2px;
-  background: transparent;
-}
-.ant-fullcalendar-value:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-fullcalendar-value:active {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-fullcalendar-today .ant-fullcalendar-value,
-.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value {
-  box-shadow: 0 0 0 1px @primary-color inset;
-}
-.ant-fullcalendar-selected-day .ant-fullcalendar-value,
-.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value {
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-.ant-fullcalendar-last-month-cell .ant-fullcalendar-value,
-.ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-fullcalendar-month-panel-table {
-  border-collapse: separate;
-}
-.ant-fullcalendar-fullscreen {
-  border-top: 0;
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-month,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-date {
-  color: rgba(0, 0, 0, 0.65);
-  border-top: 2px solid #e8e8e8;
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-month:active,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-date:active {
-  background: color(~`colorPalette("@{primary-color}", 2)`);
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-value {
-  background: transparent;
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date {
-  border-top-color: @primary-color;
-  background: transparent;
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {
-  box-shadow: none;
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value {
-  color: @primary-color;
-}
-.ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date,
-.ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date,
-.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover {
-  background: transparent;
-}
-.ant-fullcalendar-disabled-cell .ant-fullcalendar-value {
-  color: rgba(0, 0, 0, 0.25);
-  border-radius: 0;
-}
-.ant-card {
-  color: rgba(0, 0, 0, 0.65);
-  background: #fff;
-  border-radius: 2px;
-}
-.ant-card-hoverable:hover {
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);
-  border-color: rgba(0, 0, 0, 0.09);
-}
-.ant-card-bordered {
-  border: 1px solid #e8e8e8;
-}
-.ant-card-head {
-  background: transparent;
-  border-bottom: 1px solid #e8e8e8;
-  border-radius: 2px 2px 0 0;
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-card-head .ant-tabs {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-card-head .ant-tabs-bar {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-card-extra {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-card-grid {
-  border-radius: 0;
-  border: 0;
-  box-shadow: 1px 0 0 0 #e8e8e8, 0 1px 0 0 #e8e8e8, 1px 1px 0 0 #e8e8e8, 1px 0 0 0 #e8e8e8 inset, 0 1px 0 0 #e8e8e8 inset;
-}
-.ant-card-grid:hover {
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-card-cover img {
-  border-radius: 2px 2px 0 0;
-}
-.ant-card-actions {
-  border-top: 1px solid #e8e8e8;
-  background: #fafafa;
-}
-.ant-card-actions > li {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-card-actions > li > span:hover {
-  color: @primary-color;
-}
-.ant-card-actions > li > span a {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-card-actions > li > span a:hover {
-  color: @primary-color;
-}
-.ant-card-actions > li:not(:last-child) {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-card-type-inner .ant-card-head {
-  background: #fafafa;
-}
-.ant-card-meta-title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-card-meta-description {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-card-loading-block {
-  border-radius: 2px;
-  background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2));
-  background-size: 600% 600%;
-}
-.ant-carousel {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-carousel .slick-slider {
-  -webkit-tap-highlight-color: transparent;
-}
-.ant-carousel .slick-vertical .slick-slide {
-  border: 1px solid transparent;
-}
-.ant-carousel .slick-prev,
-.ant-carousel .slick-next {
-  background: transparent;
-  color: transparent;
-  border: 0;
-}
-.ant-carousel .slick-prev:hover,
-.ant-carousel .slick-next:hover,
-.ant-carousel .slick-prev:focus,
-.ant-carousel .slick-next:focus {
-  background: transparent;
-  color: transparent;
-}
-.ant-carousel .slick-dots li button {
-  border: 0;
-  background: #fff;
-  border-radius: 1px;
-  color: transparent;
-}
-.ant-carousel .slick-dots li.slick-active button {
-  background: #fff;
-}
-.ant-cascader {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-cascader-input.ant-input {
-  background-color: transparent !important;
-}
-.ant-cascader-picker {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  border-radius: 4px;
-}
-.ant-cascader-picker-with-value .ant-cascader-picker-label {
-  color: transparent;
-}
-.ant-cascader-picker-disabled {
-  background: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-cascader-picker:focus .ant-cascader-input {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-cascader-picker-show-search.ant-cascader-picker-focused {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-cascader-picker-clear {
-  background: #fff;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-cascader-picker-clear:hover {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-cascader-picker-arrow {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-cascader-menus {
-  background: #fff;
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-cascader-menu {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-cascader-menu:first-child {
-  border-radius: 4px 0 0 4px;
-}
-.ant-cascader-menu:last-child {
-  border-right-color: transparent;
-  border-radius: 0 4px 4px 0;
-}
-.ant-cascader-menu:only-child {
-  border-radius: 4px;
-}
-.ant-cascader-menu-item:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-cascader-menu-item-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-cascader-menu-item-disabled:hover {
-  background: transparent;
-}
-.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),
-.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover {
-  background: #f5f5f5;
-}
-.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,
-.ant-cascader-menu-item-expand .ant-cascader-menu-item-loading-icon {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-cascader-menu-item .ant-cascader-menu-item-keyword {
-  color: #f5222d;
-}
-.ant-checkbox {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-checkbox-wrapper:hover .ant-checkbox-inner,
-.ant-checkbox:hover .ant-checkbox-inner,
-.ant-checkbox-input:focus + .ant-checkbox-inner {
-  border-color: @primary-color;
-}
-.ant-checkbox-checked:after {
-  border-radius: 2px;
-  border: 1px solid @primary-color;
-}
-.ant-checkbox-inner {
-  border: 1px solid #d9d9d9;
-  border-radius: 2px;
-  background-color: #fff;
-}
-.ant-checkbox-inner:after {
-  border: 2px solid #fff;
-  border-top: 0;
-  border-left: 0;
-}
-.ant-checkbox-indeterminate .ant-checkbox-inner:after {
-  border: 0;
-  background-color: @primary-color;
-}
-.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.ant-checkbox-checked .ant-checkbox-inner:after {
-  border: 2px solid #fff;
-  border-top: 0;
-  border-left: 0;
-}
-.ant-checkbox-checked .ant-checkbox-inner {
-  background-color: @primary-color;
-  border-color: @primary-color;
-}
-.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.ant-checkbox-disabled .ant-checkbox-inner {
-  border-color: #d9d9d9 !important;
-  background-color: #f5f5f5;
-}
-.ant-checkbox-disabled .ant-checkbox-inner:after {
-  border-color: #f5f5f5;
-}
-.ant-checkbox-disabled + span {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-checkbox-wrapper {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-checkbox-group {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-collapse {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fafafa;
-  border-radius: 4px;
-  border: 1px solid #d9d9d9;
-  border-bottom: 0;
-}
-.ant-collapse > .ant-collapse-item {
-  border-bottom: 1px solid #d9d9d9;
-}
-.ant-collapse > .ant-collapse-item:last-child,
-.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {
-  border-radius: 0 0 4px 4px;
-}
-.ant-collapse > .ant-collapse-item > .ant-collapse-header {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-collapse-content {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  border-top: 1px solid #d9d9d9;
-}
-.ant-collapse-item:last-child > .ant-collapse-content {
-  border-radius: 0 0 4px 4px;
-}
-.ant-collapse-borderless {
-  background-color: #fff;
-  border: 0;
-}
-.ant-collapse-borderless > .ant-collapse-item {
-  border-bottom: 1px solid #d9d9d9;
-}
-.ant-collapse-borderless > .ant-collapse-item:last-child,
-.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header {
-  border-radius: 0;
-}
-.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content {
-  background-color: transparent;
-  border-top: 0;
-}
-.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header,
-.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar-picker-container {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-calendar-picker {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
-  border-color: @primary-color;
-}
-.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-calendar-picker-clear {
-  color: rgba(0, 0, 0, 0.25);
-  background: #fff;
-}
-.ant-calendar-picker-clear:hover {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar-picker-icon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar {
-  border: 1px solid #fff;
-  background-color: #fff;
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-  background-clip: padding-box;
-}
-.ant-calendar-input-wrap {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-calendar-input {
-  border: 0;
-  color: rgba(0, 0, 0, 0.65);
-  background: #fff;
-}
-.ant-calendar-input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-header {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-calendar-header a:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-calendar-header .ant-calendar-century-select,
-.ant-calendar-header .ant-calendar-decade-select,
-.ant-calendar-header .ant-calendar-year-select,
-.ant-calendar-header .ant-calendar-month-select {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-calendar-header .ant-calendar-prev-century-btn,
-.ant-calendar-header .ant-calendar-next-century-btn,
-.ant-calendar-header .ant-calendar-prev-decade-btn,
-.ant-calendar-header .ant-calendar-next-decade-btn,
-.ant-calendar-header .ant-calendar-prev-month-btn,
-.ant-calendar-header .ant-calendar-next-month-btn,
-.ant-calendar-header .ant-calendar-prev-year-btn,
-.ant-calendar-header .ant-calendar-next-year-btn {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar table {
-  border-collapse: collapse;
-  background-color: transparent;
-}
-.ant-calendar table,
-.ant-calendar th,
-.ant-calendar td {
-  border: 0;
-}
-.ant-calendar-calendar-table {
-  border-spacing: 0;
-}
-.ant-calendar-date {
-  color: rgba(0, 0, 0, 0.65);
-  border-radius: 2px;
-  border: 1px solid transparent;
-  background: transparent;
-}
-.ant-calendar-date:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-calendar-date:active {
-  color: #fff;
-  background: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-calendar-today .ant-calendar-date {
-  border-color: @primary-color;
-  color: @primary-color;
-}
-.ant-calendar-last-month-cell .ant-calendar-date,
-.ant-calendar-next-month-btn-day .ant-calendar-date {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar-selected-day .ant-calendar-date {
-  background: #d1e9ff;
-}
-.ant-calendar-selected-date .ant-calendar-date,
-.ant-calendar-selected-start-date .ant-calendar-date,
-.ant-calendar-selected-end-date .ant-calendar-date {
-  background: @primary-color;
-  color: #fff;
-  border: 1px solid transparent;
-}
-.ant-calendar-selected-date .ant-calendar-date:hover,
-.ant-calendar-selected-start-date .ant-calendar-date:hover,
-.ant-calendar-selected-end-date .ant-calendar-date:hover {
-  background: @primary-color;
-}
-.ant-calendar-disabled-cell .ant-calendar-date {
-  color: #bcbcbc;
-  background: #f5f5f5;
-  border-radius: 0;
-  border: 1px solid transparent;
-}
-.ant-calendar-disabled-cell .ant-calendar-date:hover {
-  background: #f5f5f5;
-}
-.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date:before {
-  border: 1px solid #bcbcbc;
-  border-radius: 2px;
-}
-.ant-calendar-disabled-cell-first-of-row .ant-calendar-date {
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.ant-calendar-disabled-cell-last-of-row .ant-calendar-date {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-.ant-calendar-footer {
-  border-top: 1px solid #e8e8e8;
-}
-.ant-calendar-footer:empty {
-  border-top: 0;
-}
-.ant-calendar .ant-calendar-today-btn-disabled,
-.ant-calendar .ant-calendar-clear-btn-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar .ant-calendar-clear-btn:after {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar .ant-calendar-clear-btn:hover:after {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar .ant-calendar-ok-btn {
-  background-image: none;
-  border: 1px solid transparent;
-  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);
-  color: #fff;
-  background-color: @primary-color;
-  border-color: @primary-color;
-  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.035);
-  border-radius: 4px;
-}
-.ant-calendar .ant-calendar-ok-btn:not([disabled]):active {
-  box-shadow: none;
-}
-.ant-calendar .ant-calendar-ok-btn-lg {
-  border-radius: 4px;
-}
-.ant-calendar .ant-calendar-ok-btn-sm {
-  border-radius: 4px;
-}
-.ant-calendar .ant-calendar-ok-btn > a:only-child {
-  color: currentColor;
-}
-.ant-calendar .ant-calendar-ok-btn > a:only-child:after {
-  background: transparent;
-}
-.ant-calendar .ant-calendar-ok-btn:hover,
-.ant-calendar .ant-calendar-ok-btn:focus {
-  color: #fff;
-  background-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-calendar .ant-calendar-ok-btn:hover > a:only-child,
-.ant-calendar .ant-calendar-ok-btn:focus > a:only-child {
-  color: currentColor;
-}
-.ant-calendar .ant-calendar-ok-btn:hover > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn:focus > a:only-child:after {
-  background: transparent;
-}
-.ant-calendar .ant-calendar-ok-btn:active,
-.ant-calendar .ant-calendar-ok-btn.active {
-  color: #fff;
-  background-color: color(~`colorPalette("@{primary-color}", 7)`);
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-calendar .ant-calendar-ok-btn:active > a:only-child,
-.ant-calendar .ant-calendar-ok-btn.active > a:only-child {
-  color: currentColor;
-}
-.ant-calendar .ant-calendar-ok-btn:active > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn.active > a:only-child:after {
-  background: transparent;
-}
-.ant-calendar .ant-calendar-ok-btn.disabled,
-.ant-calendar .ant-calendar-ok-btn[disabled],
-.ant-calendar .ant-calendar-ok-btn.disabled:hover,
-.ant-calendar .ant-calendar-ok-btn[disabled]:hover,
-.ant-calendar .ant-calendar-ok-btn.disabled:focus,
-.ant-calendar .ant-calendar-ok-btn[disabled]:focus,
-.ant-calendar .ant-calendar-ok-btn.disabled:active,
-.ant-calendar .ant-calendar-ok-btn[disabled]:active,
-.ant-calendar .ant-calendar-ok-btn.disabled.active,
-.ant-calendar .ant-calendar-ok-btn[disabled].active {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child,
-.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child,
-.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child,
-.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child,
-.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child,
-.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child,
-.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child,
-.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child,
-.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child,
-.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child {
-  color: currentColor;
-}
-.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child:after,
-.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child:after {
-  background: transparent;
-}
-.ant-calendar .ant-calendar-ok-btn-disabled {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-}
-.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child {
-  color: currentColor;
-}
-.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child:after {
-  background: transparent;
-}
-.ant-calendar .ant-calendar-ok-btn-disabled:hover {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #f5f5f5;
-  border-color: #d9d9d9;
-}
-.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child {
-  color: currentColor;
-}
-.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child:after {
-  background: transparent;
-}
-.ant-calendar-range-picker-input {
-  background-color: transparent;
-  border: 0;
-}
-.ant-calendar-range-picker-input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-range-picker-input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-range-picker-input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-range-picker-separator {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar-range-left .ant-calendar-time-picker-inner {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-calendar-range-right .ant-calendar-time-picker-inner {
-  border-left: 1px solid #e8e8e8;
-}
-.ant-calendar-range-middle {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar-range .ant-calendar-input,
-.ant-calendar-range .ant-calendar-time-picker-input {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-  border: 0;
-  box-shadow: none;
-}
-.ant-calendar-range .ant-calendar-input::-moz-placeholder,
-.ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-range .ant-calendar-input:-ms-input-placeholder,
-.ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-range .ant-calendar-input::-webkit-input-placeholder,
-.ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-calendar-range .ant-calendar-input:hover,
-.ant-calendar-range .ant-calendar-time-picker-input:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-calendar-range .ant-calendar-input:focus,
-.ant-calendar-range .ant-calendar-time-picker-input:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-calendar-range .ant-calendar-input-disabled,
-.ant-calendar-range .ant-calendar-time-picker-input-disabled {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar-range .ant-calendar-input-disabled:hover,
-.ant-calendar-range .ant-calendar-time-picker-input-disabled:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-calendar-range .ant-calendar-input:focus,
-.ant-calendar-range .ant-calendar-time-picker-input:focus {
-  box-shadow: none;
-}
-.ant-calendar-range .ant-calendar-in-range-cell {
-  border-radius: 0;
-}
-.ant-calendar-range .ant-calendar-in-range-cell:before {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-  border-radius: 0;
-  border: 0;
-}
-.ant-calendar-range .ant-calendar-header,
-.ant-calendar-range .ant-calendar-month-panel-header,
-.ant-calendar-range .ant-calendar-year-panel-header {
-  border-bottom: 0;
-}
-.ant-calendar-range .ant-calendar-body,
-.ant-calendar-range .ant-calendar-month-panel-body,
-.ant-calendar-range .ant-calendar-year-panel-body {
-  border-top: 1px solid #e8e8e8;
-}
-.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner {
-  background: none;
-}
-.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox {
-  background-color: #fff;
-  border-top: 1px solid #e8e8e8;
-}
-.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body {
-  border-top-color: transparent;
-}
-.ant-calendar-time-picker {
-  background-color: #fff;
-}
-.ant-calendar-time-picker-inner {
-  background-color: #fff;
-  background-clip: padding-box;
-}
-.ant-calendar-time-picker-select {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-calendar-time-picker-select:first-child {
-  border-left: 0;
-}
-.ant-calendar-time-picker-select:last-child {
-  border-right: 0;
-}
-.ant-calendar-time-picker-select li:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-li.ant-calendar-time-picker-select-option-selected {
-  background: #f5f5f5;
-}
-li.ant-calendar-time-picker-select-option-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-li.ant-calendar-time-picker-select-option-disabled:hover {
-  background: transparent;
-}
-.ant-calendar-time .ant-calendar-day-select {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar-month-panel {
-  border-radius: 4px;
-  background: #fff;
-}
-.ant-calendar-month-panel-header {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-calendar-month-panel-header a:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn,
-.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar-month-panel-table {
-  border-collapse: separate;
-}
-.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month,
-.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover {
-  color: #bcbcbc;
-  background: #f5f5f5;
-}
-.ant-calendar-month-panel-month {
-  color: rgba(0, 0, 0, 0.65);
-  background: transparent;
-  border-radius: 2px;
-}
-.ant-calendar-month-panel-month:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-calendar-year-panel {
-  border-radius: 4px;
-  background: #fff;
-}
-.ant-calendar-year-panel-header {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-calendar-year-panel-header a:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn,
-.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar-year-panel-table {
-  border-collapse: separate;
-}
-.ant-calendar-year-panel-year {
-  color: rgba(0, 0, 0, 0.65);
-  background: transparent;
-  border-radius: 2px;
-}
-.ant-calendar-year-panel-year:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year,
-.ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar-decade-panel {
-  background: #fff;
-  border-radius: 4px;
-}
-.ant-calendar-decade-panel-header {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-calendar-decade-panel-header a:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn,
-.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-calendar-decade-panel-table {
-  border-collapse: separate;
-}
-.ant-calendar-decade-panel-decade {
-  color: rgba(0, 0, 0, 0.65);
-  background: transparent;
-  border-radius: 2px;
-}
-.ant-calendar-decade-panel-decade:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade,
-.ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-calendar-week-number .ant-calendar-body tr:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {
-  background: color(~`colorPalette("@{primary-color}", 2)`);
-}
-.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date,
-.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date {
-  background: transparent;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-divider {
-  color: rgba(0, 0, 0, 0.65);
-  background: #e8e8e8;
-}
-.ant-divider-horizontal.ant-divider-with-text,
-.ant-divider-horizontal.ant-divider-with-text-left,
-.ant-divider-horizontal.ant-divider-with-text-right {
-  background: transparent;
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-divider-horizontal.ant-divider-with-text:before,
-.ant-divider-horizontal.ant-divider-with-text-left:before,
-.ant-divider-horizontal.ant-divider-with-text-right:before,
-.ant-divider-horizontal.ant-divider-with-text:after,
-.ant-divider-horizontal.ant-divider-with-text-left:after,
-.ant-divider-horizontal.ant-divider-with-text-right:after {
-  border-top: 1px solid #e8e8e8;
-}
-.ant-divider-dashed {
-  background: none;
-  border-top: 1px dashed #e8e8e8;
-}
-.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed,
-.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed,
-.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed {
-  border-top: 0;
-}
-.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:before,
-.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:before,
-.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:before,
-.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:after,
-.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:after,
-.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:after {
-  border-style: dashed none none;
-}
-.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {
-  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);
-}
-.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {
-  box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);
-}
-.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {
-  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-drawer-title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-drawer-content {
-  background-color: #fff;
-  border: 0;
-  background-clip: padding-box;
-}
-.ant-drawer-close {
-  border: 0;
-  background: transparent;
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-drawer-close:focus,
-.ant-drawer-close:hover {
-  color: #444;
-}
-.ant-drawer-header {
-  border-radius: 4px 4px 0 0;
-  background: #fff;
-  color: rgba(0, 0, 0, 0.65);
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-drawer-mask {
-  background-color: rgba(0, 0, 0, 0.65);
-}
-.ant-drawer-open-content {
-  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-}
-.ant-dropdown {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-dropdown-menu {
-  background-color: #fff;
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-  background-clip: padding-box;
-}
-.ant-dropdown-menu-item-group-title {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-dropdown-menu-item,
-.ant-dropdown-menu-submenu-title {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-dropdown-menu-item > a,
-.ant-dropdown-menu-submenu-title > a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-dropdown-menu-item-selected,
-.ant-dropdown-menu-submenu-title-selected,
-.ant-dropdown-menu-item-selected > a,
-.ant-dropdown-menu-submenu-title-selected > a {
-  color: @primary-color;
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-dropdown-menu-item:hover,
-.ant-dropdown-menu-submenu-title:hover {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-dropdown-menu-item-disabled,
-.ant-dropdown-menu-submenu-title-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-dropdown-menu-item-disabled:hover,
-.ant-dropdown-menu-submenu-title-disabled:hover {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #fff;
-}
-.ant-dropdown-menu-item-divider,
-.ant-dropdown-menu-submenu-title-divider {
-  background-color: #e8e8e8;
-}
-.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon,
-.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,
-.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-dropdown-menu-dark,
-.ant-dropdown-menu-dark .ant-dropdown-menu {
-  background: #001529;
-}
-.ant-dropdown-menu-dark .ant-dropdown-menu-item,
-.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title,
-.ant-dropdown-menu-dark .ant-dropdown-menu-item > a {
-  color: rgba(255, 255, 255, 0.65);
-}
-.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after,
-.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after,
-.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after {
-  color: rgba(255, 255, 255, 0.65);
-}
-.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,
-.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover,
-.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover {
-  color: #fff;
-  background: transparent;
-}
-.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,
-.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,
-.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {
-  background: @primary-color;
-  color: #fff;
-}
-.ant-form {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-form legend {
-  color: rgba(0, 0, 0, 0.45);
-  border: 0;
-  border-bottom: 1px solid #d9d9d9;
-}
-.ant-form output {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-form-item-required:before {
-  color: #f5222d;
-}
-.ant-form-item {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-form-item-label label {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-form-explain,
-.ant-form-extra {
-  color: rgba(0, 0, 0, 0.45);
-}
-form .ant-upload {
-  background: transparent;
-}
-.ant-input-group-wrap .ant-select-selection {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-.ant-input-group-wrap .ant-select-selection:hover {
-  border-color: #d9d9d9;
-}
-.ant-input-group-wrap .ant-select-selection--single {
-  background-color: #eee;
-}
-.ant-input-group-wrap .ant-select-open .ant-select-selection {
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.has-success.has-feedback .ant-form-item-children-icon {
-  color: #52c41a;
-}
-.has-warning .ant-form-explain,
-.has-warning .ant-form-split {
-  color: #faad14;
-}
-.has-warning .ant-input,
-.has-warning .ant-input:hover {
-  border-color: #faad14;
-}
-.has-warning .ant-input:focus {
-  border-color: #ffc53d;
-  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);
-  border-right-width: 1px !important;
-}
-.has-warning .ant-input:not([disabled]):hover {
-  border-color: #faad14;
-}
-.has-warning .ant-calendar-picker-open .ant-calendar-picker-input {
-  border-color: #ffc53d;
-  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);
-  border-right-width: 1px !important;
-}
-.has-warning .ant-input-prefix {
-  color: #faad14;
-}
-.has-warning .ant-input-group-addon {
-  color: #faad14;
-  border-color: #faad14;
-  background-color: #fff;
-}
-.has-warning .has-feedback {
-  color: #faad14;
-}
-.has-warning.has-feedback .ant-form-item-children-icon {
-  color: #faad14;
-}
-.has-warning .ant-select-selection {
-  border-color: #faad14;
-}
-.has-warning .ant-select-open .ant-select-selection,
-.has-warning .ant-select-focused .ant-select-selection {
-  border-color: #ffc53d;
-  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);
-  border-right-width: 1px !important;
-}
-.has-warning .ant-calendar-picker-icon:after,
-.has-warning .ant-time-picker-icon:after,
-.has-warning .ant-picker-icon:after,
-.has-warning .ant-select-arrow,
-.has-warning .ant-cascader-picker-arrow {
-  color: #faad14;
-}
-.has-warning .ant-input-number,
-.has-warning .ant-time-picker-input {
-  border-color: #faad14;
-}
-.has-warning .ant-input-number-focused,
-.has-warning .ant-time-picker-input-focused,
-.has-warning .ant-input-number:focus,
-.has-warning .ant-time-picker-input:focus {
-  border-color: #ffc53d;
-  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);
-  border-right-width: 1px !important;
-}
-.has-warning .ant-input-number:not([disabled]):hover,
-.has-warning .ant-time-picker-input:not([disabled]):hover {
-  border-color: #faad14;
-}
-.has-warning .ant-cascader-picker:focus .ant-cascader-input {
-  border-color: #ffc53d;
-  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);
-  border-right-width: 1px !important;
-}
-.has-error .ant-form-explain,
-.has-error .ant-form-split {
-  color: #f5222d;
-}
-.has-error .ant-input,
-.has-error .ant-input:hover {
-  border-color: #f5222d;
-}
-.has-error .ant-input:focus {
-  border-color: #ff4d4f;
-  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);
-  border-right-width: 1px !important;
-}
-.has-error .ant-input:not([disabled]):hover {
-  border-color: #f5222d;
-}
-.has-error .ant-calendar-picker-open .ant-calendar-picker-input {
-  border-color: #ff4d4f;
-  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);
-  border-right-width: 1px !important;
-}
-.has-error .ant-input-prefix {
-  color: #f5222d;
-}
-.has-error .ant-input-group-addon {
-  color: #f5222d;
-  border-color: #f5222d;
-  background-color: #fff;
-}
-.has-error .has-feedback {
-  color: #f5222d;
-}
-.has-error.has-feedback .ant-form-item-children-icon {
-  color: #f5222d;
-}
-.has-error .ant-select-selection {
-  border-color: #f5222d;
-}
-.has-error .ant-select-open .ant-select-selection,
-.has-error .ant-select-focused .ant-select-selection {
-  border-color: #ff4d4f;
-  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);
-  border-right-width: 1px !important;
-}
-.has-error .ant-select.ant-select-auto-complete .ant-input:focus {
-  border-color: #f5222d;
-}
-.has-error .ant-input-group-addon .ant-select-selection {
-  border-color: transparent;
-  box-shadow: none;
-}
-.has-error .ant-calendar-picker-icon:after,
-.has-error .ant-time-picker-icon:after,
-.has-error .ant-picker-icon:after,
-.has-error .ant-select-arrow,
-.has-error .ant-cascader-picker-arrow {
-  color: #f5222d;
-}
-.has-error .ant-input-number,
-.has-error .ant-time-picker-input {
-  border-color: #f5222d;
-}
-.has-error .ant-input-number-focused,
-.has-error .ant-time-picker-input-focused,
-.has-error .ant-input-number:focus,
-.has-error .ant-time-picker-input:focus {
-  border-color: #ff4d4f;
-  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);
-  border-right-width: 1px !important;
-}
-.has-error .ant-input-number:not([disabled]):hover,
-.has-error .ant-time-picker-input:not([disabled]):hover {
-  border-color: #f5222d;
-}
-.has-error .ant-mention-wrapper .ant-mention-editor,
-.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover {
-  border-color: #f5222d;
-}
-.has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor,
-.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {
-  border-color: #ff4d4f;
-  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);
-  border-right-width: 1px !important;
-}
-.has-error .ant-cascader-picker:focus .ant-cascader-input {
-  border-color: #ff4d4f;
-  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);
-  border-right-width: 1px !important;
-}
-.is-validating.has-feedback .ant-form-item-children-icon {
-  color: @primary-color;
-}
-.ant-input-number {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-input-number::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-input-number:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-input-number::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-input-number:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-input-number:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-input-number-disabled {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-input-number-disabled:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-input-number-handler {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-input-number-handler:active {
-  background: #f4f4f4;
-}
-.ant-input-number-handler:hover .ant-input-number-handler-up-inner,
-.ant-input-number-handler:hover .ant-input-number-handler-down-inner {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-input-number-handler-up-inner,
-.ant-input-number-handler-down-inner {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-input-number:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-input-number-focused {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-input-number-disabled {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-input-number-disabled:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-input-number-input {
-  background-color: transparent;
-  border: 0;
-  border-radius: 4px;
-}
-.ant-input-number-input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-input-number-input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-input-number-input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-input-number-handler-wrap {
-  border-left: 1px solid #d9d9d9;
-  background: #fff;
-  border-radius: 0 4px 4px 0;
-}
-.ant-input-number-handler-down {
-  border-top: 1px solid #d9d9d9;
-}
-.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,
-.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-input {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-input:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-input:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-input-disabled {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-input-disabled:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-input-group {
-  color: rgba(0, 0, 0, 0.65);
-  border-collapse: separate;
-  border-spacing: 0;
-}
-.ant-input-group-addon:not(:first-child):not(:last-child),
-.ant-input-group-wrap:not(:first-child):not(:last-child),
-.ant-input-group > .ant-input:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.ant-input-group .ant-input:focus {
-  border-right-width: 1px;
-}
-.ant-input-group .ant-input:hover {
-  border-right-width: 1px;
-}
-.ant-input-group-addon {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fafafa;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-input-group-addon .ant-select .ant-select-selection {
-  background-color: inherit;
-  border: 1px solid transparent;
-  box-shadow: none;
-}
-.ant-input-group-addon .ant-select-open .ant-select-selection,
-.ant-input-group-addon .ant-select-focused .ant-select-selection {
-  color: @primary-color;
-}
-.ant-input-group > .ant-input:first-child,
-.ant-input-group-addon:first-child {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0;
-}
-.ant-input-group > .ant-input:first-child .ant-select .ant-select-selection,
-.ant-input-group-addon:first-child .ant-select .ant-select-selection {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0;
-}
-.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input {
-  border-bottom-right-radius: 0;
-  border-top-right-radius: 0;
-}
-.ant-input-group-addon:first-child {
-  border-right: 0;
-}
-.ant-input-group-addon:last-child {
-  border-left: 0;
-}
-.ant-input-group > .ant-input:last-child,
-.ant-input-group-addon:last-child {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-.ant-input-group > .ant-input:last-child .ant-select .ant-select-selection,
-.ant-input-group-addon:last-child .ant-select .ant-select-selection {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child),
-.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child),
-.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) {
-  border-right-width: 1px;
-  border-right-color: transparent;
-}
-.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover,
-.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover,
-.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus,
-.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus,
-.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-input-group.ant-input-group-compact > * {
-  border-radius: 0;
-  border-right-width: 0;
-}
-.ant-input-group.ant-input-group-compact > span:not(:last-child) > .ant-input {
-  border-right-width: 0;
-}
-.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor,
-.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input {
-  border-radius: 0;
-  border-right-width: 1px;
-  border-right-color: transparent;
-}
-.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover,
-.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus,
-.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-input-group.ant-input-group-compact > *:first-child,
-.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor,
-.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input {
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.ant-input-group.ant-input-group-compact > *:last-child,
-.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor,
-.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-  border-right-width: 1px;
-  border-right-color: #d9d9d9;
-}
-.ant-input-group.ant-input-group-compact > *:last-child:hover,
-.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:hover,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:hover,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:hover,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:hover,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:hover,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:hover,
-.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-input-group.ant-input-group-compact > *:last-child:focus,
-.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:focus,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:focus,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:focus,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:focus,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:focus,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:focus,
-.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-input-group.ant-input-group-compact > *:last-child:focus .ant-cascader-input,
-.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection:focus .ant-cascader-input,
-.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input:focus .ant-cascader-input,
-.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input:focus .ant-cascader-input,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input:focus .ant-cascader-input,
-.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input:focus .ant-cascader-input,
-.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor:focus .ant-cascader-input,
-.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input:focus .ant-cascader-input {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-input-affix-wrapper {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-input-affix-wrapper .ant-input-prefix,
-.ant-input-affix-wrapper .ant-input-suffix {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-input-search-icon {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-input-search-icon:hover {
-  color: #333;
-}
-.ant-input-search > .ant-input-suffix > .ant-input-search-button {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.ant-layout {
-  background: #f0f2f5;
-}
-.ant-layout-header {
-  background: #001529;
-}
-.ant-layout-footer {
-  background: #f0f2f5;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-layout-sider {
-  background: #001529;
-}
-.ant-layout-sider-trigger {
-  color: #fff;
-  background: #002140;
-}
-.ant-layout-sider-zero-width-trigger {
-  background: #001529;
-  color: #fff;
-  border-radius: 0 4px 4px 0;
-}
-.ant-layout-sider-zero-width-trigger:hover {
-  background: #192c3e;
-}
-.ant-layout-sider-light {
-  background: #fff;
-}
-.ant-layout-sider-light .ant-layout-sider-trigger {
-  color: rgba(0, 0, 0, 0.65);
-  background: #fff;
-}
-.ant-layout-sider-light .ant-layout-sider-zero-width-trigger {
-  color: rgba(0, 0, 0, 0.65);
-  background: #fff;
-}
-.ant-list {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-list-empty-text {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-list-item-meta-title {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-list-item-meta-title > a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-list-item-meta-title > a:hover {
-  color: @primary-color;
-}
-.ant-list-item-meta-description {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-list-item-action > li {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-list-item-action-split {
-  background-color: #e8e8e8;
-}
-.ant-list-empty {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-list-split .ant-list-item {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-list-split .ant-list-item:last-child {
-  border-bottom: none;
-}
-.ant-list-split .ant-list-header {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-list-something-after-last-item .ant-spin-container > .ant-list-item:last-child {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-list-vertical .ant-list-item-meta-title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-list-vertical .ant-list-item-content {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-list-grid .ant-list-item {
-  border-bottom: none;
-}
-.ant-list-bordered {
-  border-radius: 4px;
-  border: 1px solid #d9d9d9;
-}
-.ant-list-bordered .ant-list-item {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-mention-wrapper {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-mention-wrapper .ant-mention-editor {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-mention-wrapper .ant-mention-editor::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-mention-wrapper .ant-mention-editor:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-mention-wrapper .ant-mention-editor::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-mention-wrapper .ant-mention-editor:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-mention-wrapper .ant-mention-editor:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-mention-wrapper .ant-mention-editor-disabled {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-mention-wrapper .ant-mention-editor-disabled:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-mention-wrapper.ant-mention-active:not(.disabled) .ant-mention-editor {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-mention-wrapper.disabled .ant-mention-editor {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-mention-wrapper.disabled .ant-mention-editor:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-mention-wrapper .public-DraftEditorPlaceholder-root .public-DraftEditorPlaceholder-inner {
-  color: #bfbfbf;
-}
-.ant-mention-dropdown {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-  border-radius: 4px;
-}
-.ant-mention-dropdown-notfound.ant-mention-dropdown-item {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-mention-dropdown-notfound.ant-mention-dropdown-item .anticon-loading {
-  color: @primary-color;
-}
-.ant-mention-dropdown-item {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-mention-dropdown-item:hover {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-mention-dropdown-item.focus,
-.ant-mention-dropdown-item-active {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-mention-dropdown-item-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-mention-dropdown-item-disabled:hover {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #fff;
-}
-.ant-mention-dropdown-item-selected,
-.ant-mention-dropdown-item-selected:hover {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-mention-dropdown-item-divider {
-  background-color: #e8e8e8;
-}
-.ant-menu {
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-  color: rgba(0, 0, 0, 0.65);
-  background: #fff;
-}
-.ant-menu-item-group-title {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-menu-item:active,
-.ant-menu-submenu-title:active {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-menu-item > a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-menu-item > a:hover {
-  color: @primary-color;
-}
-.ant-menu-item > a:before {
-  background-color: transparent;
-}
-.ant-menu-item-divider {
-  background-color: #e8e8e8;
-}
-.ant-menu-item:hover,
-.ant-menu-item-active,
-.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
-.ant-menu-submenu-active,
-.ant-menu-submenu-title:hover {
-  color: @primary-color;
-}
-.ant-menu-horizontal > .ant-menu-item:hover,
-.ant-menu-horizontal > .ant-menu-item-active,
-.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {
-  background-color: transparent;
-}
-.ant-menu-item-selected {
-  color: @primary-color;
-}
-.ant-menu-item-selected > a,
-.ant-menu-item-selected > a:hover {
-  color: @primary-color;
-}
-.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-menu-inline,
-.ant-menu-vertical,
-.ant-menu-vertical-left {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-menu-vertical-right {
-  border-left: 1px solid #e8e8e8;
-}
-.ant-menu-vertical.ant-menu-sub,
-.ant-menu-vertical-left.ant-menu-sub,
-.ant-menu-vertical-right.ant-menu-sub {
-  border-right: 0;
-}
-.ant-menu-vertical.ant-menu-sub .ant-menu-item,
-.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,
-.ant-menu-vertical-right.ant-menu-sub .ant-menu-item {
-  border-right: 0;
-}
-.ant-menu-vertical.ant-menu-sub .ant-menu-item:after,
-.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after,
-.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after {
-  border-right: 0;
-}
-.ant-menu > .ant-menu-item-divider {
-  background-color: #e8e8e8;
-}
-.ant-menu-submenu-popup {
-  border-radius: 4px;
-}
-.ant-menu-submenu > .ant-menu {
-  background-color: #fff;
-  border-radius: 4px;
-}
-.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
-  background: #fff;
-  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65));
-  border-radius: 2px;
-}
-.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before {
-  background: linear-gradient(to right, @primary-color, @primary-color);
-}
-.ant-menu-vertical .ant-menu-submenu-selected,
-.ant-menu-vertical-left .ant-menu-submenu-selected,
-.ant-menu-vertical-right .ant-menu-submenu-selected {
-  color: @primary-color;
-}
-.ant-menu-vertical .ant-menu-submenu-selected > a,
-.ant-menu-vertical-left .ant-menu-submenu-selected > a,
-.ant-menu-vertical-right .ant-menu-submenu-selected > a {
-  color: @primary-color;
-}
-.ant-menu-horizontal {
-  border: 0;
-  border-bottom: 1px solid #e8e8e8;
-  box-shadow: none;
-}
-.ant-menu-horizontal > .ant-menu-item,
-.ant-menu-horizontal > .ant-menu-submenu {
-  border-bottom: 2px solid transparent;
-}
-.ant-menu-horizontal > .ant-menu-item:hover,
-.ant-menu-horizontal > .ant-menu-submenu:hover,
-.ant-menu-horizontal > .ant-menu-item-active,
-.ant-menu-horizontal > .ant-menu-submenu-active,
-.ant-menu-horizontal > .ant-menu-item-open,
-.ant-menu-horizontal > .ant-menu-submenu-open,
-.ant-menu-horizontal > .ant-menu-item-selected,
-.ant-menu-horizontal > .ant-menu-submenu-selected {
-  border-bottom: 2px solid @primary-color;
-  color: @primary-color;
-}
-.ant-menu-horizontal > .ant-menu-item > a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-menu-horizontal > .ant-menu-item > a:hover {
-  color: @primary-color;
-}
-.ant-menu-horizontal > .ant-menu-item-selected > a {
-  color: @primary-color;
-}
-.ant-menu-vertical .ant-menu-item:after,
-.ant-menu-vertical-left .ant-menu-item:after,
-.ant-menu-vertical-right .ant-menu-item:after,
-.ant-menu-inline .ant-menu-item:after {
-  border-right: 3px solid @primary-color;
-}
-.ant-menu-inline-collapsed-tooltip a {
-  color: rgba(255, 255, 255, 0.85);
-}
-.ant-menu-root.ant-menu-vertical,
-.ant-menu-root.ant-menu-vertical-left,
-.ant-menu-root.ant-menu-vertical-right,
-.ant-menu-root.ant-menu-inline {
-  box-shadow: none;
-}
-.ant-menu-sub.ant-menu-inline {
-  border: 0;
-  box-shadow: none;
-  border-radius: 0;
-}
-.ant-menu-item-disabled,
-.ant-menu-submenu-disabled {
-  color: rgba(0, 0, 0, 0.25) !important;
-  background: none;
-  border-color: transparent !important;
-}
-.ant-menu-item-disabled > a,
-.ant-menu-submenu-disabled > a {
-  color: rgba(0, 0, 0, 0.25) !important;
-}
-.ant-menu-item-disabled > .ant-menu-submenu-title,
-.ant-menu-submenu-disabled > .ant-menu-submenu-title {
-  color: rgba(0, 0, 0, 0.25) !important;
-}
-.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after {
-  background: rgba(0, 0, 0, 0.25) !important;
-}
-.ant-menu-dark,
-.ant-menu-dark .ant-menu-sub {
-  color: rgba(255, 255, 255, 0.65);
-  background: #001529;
-}
-.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
-  background: #fff;
-}
-.ant-menu-dark.ant-menu-submenu-popup {
-  background: transparent;
-}
-.ant-menu-dark .ant-menu-inline.ant-menu-sub {
-  background: #000c17;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset;
-}
-.ant-menu-dark.ant-menu-horizontal {
-  border-bottom: 0;
-}
-.ant-menu-dark.ant-menu-horizontal > .ant-menu-item,
-.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {
-  border-color: #001529;
-  border-bottom: 0;
-}
-.ant-menu-dark .ant-menu-item,
-.ant-menu-dark .ant-menu-item-group-title,
-.ant-menu-dark .ant-menu-item > a {
-  color: rgba(255, 255, 255, 0.65);
-}
-.ant-menu-dark.ant-menu-inline,
-.ant-menu-dark.ant-menu-vertical,
-.ant-menu-dark.ant-menu-vertical-left,
-.ant-menu-dark.ant-menu-vertical-right {
-  border-right: 0;
-}
-.ant-menu-dark.ant-menu-inline .ant-menu-item,
-.ant-menu-dark.ant-menu-vertical .ant-menu-item,
-.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,
-.ant-menu-dark.ant-menu-vertical-right .ant-menu-item {
-  border-right: 0;
-}
-.ant-menu-dark.ant-menu-inline .ant-menu-item:after,
-.ant-menu-dark.ant-menu-vertical .ant-menu-item:after,
-.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after,
-.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after {
-  border-right: 0;
-}
-.ant-menu-dark .ant-menu-item:hover,
-.ant-menu-dark .ant-menu-item-active,
-.ant-menu-dark .ant-menu-submenu-active,
-.ant-menu-dark .ant-menu-submenu-open,
-.ant-menu-dark .ant-menu-submenu-selected,
-.ant-menu-dark .ant-menu-submenu-title:hover {
-  background-color: transparent;
-  color: #fff;
-}
-.ant-menu-dark .ant-menu-item:hover > a,
-.ant-menu-dark .ant-menu-item-active > a,
-.ant-menu-dark .ant-menu-submenu-active > a,
-.ant-menu-dark .ant-menu-submenu-open > a,
-.ant-menu-dark .ant-menu-submenu-selected > a,
-.ant-menu-dark .ant-menu-submenu-title:hover > a {
-  color: #fff;
-}
-.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before {
-  background: #fff;
-}
-.ant-menu-dark .ant-menu-item-selected {
-  border-right: 0;
-  color: #fff;
-}
-.ant-menu-dark .ant-menu-item-selected:after {
-  border-right: 0;
-}
-.ant-menu-dark .ant-menu-item-selected > a,
-.ant-menu-dark .ant-menu-item-selected > a:hover {
-  color: #fff;
-}
-.ant-menu.ant-menu-dark .ant-menu-item-selected,
-.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected {
-  background-color: @primary-color;
-}
-.ant-menu-dark .ant-menu-item-disabled,
-.ant-menu-dark .ant-menu-submenu-disabled,
-.ant-menu-dark .ant-menu-item-disabled > a,
-.ant-menu-dark .ant-menu-submenu-disabled > a {
-  color: rgba(255, 255, 255, 0.35) !important;
-}
-.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title,
-.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {
-  color: rgba(255, 255, 255, 0.35) !important;
-}
-.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
-.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
-.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after {
-  background: rgba(255, 255, 255, 0.35) !important;
-}
-.ant-message {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-message-notice-content {
-  border-radius: 4px;
-  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-  background: #fff;
-}
-.ant-message-success .anticon {
-  color: #52c41a;
-}
-.ant-message-error .anticon {
-  color: #f5222d;
-}
-.ant-message-warning .anticon {
-  color: #faad14;
-}
-.ant-message-info .anticon,
-.ant-message-loading .anticon {
-  color: @primary-color;
-}
-.ant-modal {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-modal-title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-modal-content {
-  background-color: #fff;
-  border: 0;
-  border-radius: 4px;
-  background-clip: padding-box;
-  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-}
-.ant-modal-close {
-  border: 0;
-  background: transparent;
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-modal-close:focus,
-.ant-modal-close:hover {
-  color: #444;
-}
-.ant-modal-header {
-  border-radius: 4px 4px 0 0;
-  background: #fff;
-  color: rgba(0, 0, 0, 0.65);
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-modal-footer {
-  border-top: 1px solid #e8e8e8;
-  border-radius: 0 0 4px 4px;
-}
-.ant-modal-mask {
-  background-color: rgba(0, 0, 0, 0.65);
-}
-.ant-confirm-body .ant-confirm-title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-confirm-body .ant-confirm-content {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-confirm-error .ant-confirm-body > .anticon {
-  color: #f5222d;
-}
-.ant-confirm-warning .ant-confirm-body > .anticon,
-.ant-confirm-confirm .ant-confirm-body > .anticon {
-  color: #faad14;
-}
-.ant-confirm-info .ant-confirm-body > .anticon {
-  color: @primary-color;
-}
-.ant-confirm-success .ant-confirm-body > .anticon {
-  color: #52c41a;
-}
-.ant-notification {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-notification-notice {
-  border-radius: 4px;
-  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
-  background: #fff;
-}
-.ant-notification-notice-message {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-notification-notice-message-single-line-auto-margin {
-  background-color: transparent;
-}
-.ant-notification-notice-icon-success {
-  color: #52c41a;
-}
-.ant-notification-notice-icon-info {
-  color: @primary-color;
-}
-.ant-notification-notice-icon-warning {
-  color: #faad14;
-}
-.ant-notification-notice-icon-error {
-  color: #f5222d;
-}
-.ant-notification-notice-close {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-notification-notice-close:hover {
-  color: rgba(0, 0, 0, 0.67);
-}
-.ant-pagination {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-pagination-item {
-  border-radius: 4px;
-  border: 1px solid #d9d9d9;
-  background-color: #fff;
-}
-.ant-pagination-item a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-pagination-item:focus,
-.ant-pagination-item:hover {
-  border-color: @primary-color;
-}
-.ant-pagination-item:focus a,
-.ant-pagination-item:hover a {
-  color: @primary-color;
-}
-.ant-pagination-item-active {
-  border-color: @primary-color;
-}
-.ant-pagination-item-active a {
-  color: @primary-color;
-}
-.ant-pagination-item-active:focus,
-.ant-pagination-item-active:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-pagination-item-active:focus a,
-.ant-pagination-item-active:hover a {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,
-.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon {
-  color: @primary-color;
-}
-.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,
-.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-pagination-prev,
-.ant-pagination-next,
-.ant-pagination-jump-prev,
-.ant-pagination-jump-next {
-  color: rgba(0, 0, 0, 0.65);
-  border-radius: 4px;
-}
-.ant-pagination-prev a,
-.ant-pagination-next a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-pagination-prev:hover a,
-.ant-pagination-next:hover a {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-pagination-prev .ant-pagination-item-link,
-.ant-pagination-next .ant-pagination-item-link {
-  border: 1px solid #d9d9d9;
-  background-color: #fff;
-  border-radius: 4px;
-}
-.ant-pagination-prev:focus .ant-pagination-item-link,
-.ant-pagination-next:focus .ant-pagination-item-link,
-.ant-pagination-prev:hover .ant-pagination-item-link,
-.ant-pagination-next:hover .ant-pagination-item-link {
-  border-color: @primary-color;
-  color: @primary-color;
-}
-.ant-pagination-disabled a,
-.ant-pagination-disabled:hover a,
-.ant-pagination-disabled:focus a,
-.ant-pagination-disabled .ant-pagination-item-link,
-.ant-pagination-disabled:hover .ant-pagination-item-link,
-.ant-pagination-disabled:focus .ant-pagination-item-link {
-  border-color: #d9d9d9;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-pagination-options-quick-jumper input {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-pagination-options-quick-jumper input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-pagination-options-quick-jumper input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-pagination-options-quick-jumper input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-pagination-options-quick-jumper input:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-pagination-options-quick-jumper input:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-pagination-options-quick-jumper input-disabled {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-pagination-options-quick-jumper input-disabled:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,
-.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link {
-  border: 0;
-}
-.ant-pagination-simple .ant-pagination-simple-pager input {
-  background-color: #fff;
-  border-radius: 4px;
-  border: 1px solid #d9d9d9;
-}
-.ant-pagination-simple .ant-pagination-simple-pager input:hover {
-  border-color: @primary-color;
-}
-.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {
-  background: transparent;
-  border-color: transparent;
-}
-.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link,
-.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link {
-  border-color: transparent;
-  background: transparent;
-}
-.ant-popover {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-popover:after {
-  background: rgba(255, 255, 255, 0.01);
-}
-.ant-popover-inner {
-  background-color: #fff;
-  background-clip: padding-box;
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-popover-title {
-  border-bottom: 1px solid #e8e8e8;
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-popover-inner-content {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-popover-message {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-popover-message > .anticon {
-  color: #faad14;
-}
-.ant-popover-arrow {
-  background: #fff;
-  border-color: transparent;
-  border-style: solid;
-}
-.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {
-  box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);
-}
-.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {
-  box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);
-}
-.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {
-  box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06);
-}
-.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow,
-.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {
-  box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);
-}
-.ant-progress {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-progress-inner {
-  background-color: #f5f5f5;
-  border-radius: 100px;
-}
-.ant-progress-success-bg,
-.ant-progress-bg {
-  background-color: @primary-color;
-}
-.ant-progress-success-bg {
-  background-color: #52c41a;
-}
-.ant-progress-text {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-progress-status-active .ant-progress-bg:before {
-  background: #fff;
-  border-radius: 10px;
-}
-.ant-progress-status-exception .ant-progress-bg {
-  background-color: #f5222d;
-}
-.ant-progress-status-exception .ant-progress-text {
-  color: #f5222d;
-}
-.ant-progress-status-success .ant-progress-bg {
-  background-color: #52c41a;
-}
-.ant-progress-status-success .ant-progress-text {
-  color: #52c41a;
-}
-.ant-progress-circle .ant-progress-inner {
-  background-color: transparent;
-}
-.ant-progress-circle .ant-progress-text {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-progress-circle.ant-progress-status-exception .ant-progress-text {
-  color: #f5222d;
-}
-.ant-progress-circle.ant-progress-status-success .ant-progress-text {
-  color: #52c41a;
-}
-.ant-radio-group {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-radio-wrapper {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-radio {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-radio-wrapper:hover .ant-radio .ant-radio-inner,
-.ant-radio:hover .ant-radio-inner,
-.ant-radio-focused .ant-radio-inner {
-  border-color: @primary-color;
-}
-.ant-radio-checked:after {
-  border-radius: 50%;
-  border: 1px solid @primary-color;
-}
-.ant-radio-inner {
-  border-width: 1px;
-  border-style: solid;
-  border-radius: 100px;
-  border-color: #d9d9d9;
-  background-color: #fff;
-}
-.ant-radio-inner:after {
-  border-radius: 8px;
-  border-top: 0;
-  border-left: 0;
-  background-color: @primary-color;
-}
-.ant-radio-checked .ant-radio-inner {
-  border-color: @primary-color;
-}
-.ant-radio-disabled .ant-radio-inner {
-  border-color: #d9d9d9 !important;
-  background-color: #f5f5f5;
-}
-.ant-radio-disabled .ant-radio-inner:after {
-  background-color: #ccc;
-}
-.ant-radio-disabled + span {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-radio-button-wrapper {
-  color: rgba(0, 0, 0, 0.65);
-  border: 1px solid #d9d9d9;
-  border-left: 0;
-  border-top-width: 1.02px;
-  background: #fff;
-}
-.ant-radio-button-wrapper a {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-radio-button-wrapper:not(:first-child)::before {
-  background-color: #d9d9d9;
-}
-.ant-radio-button-wrapper:first-child {
-  border-radius: 4px 0 0 4px;
-  border-left: 1px solid #d9d9d9;
-}
-.ant-radio-button-wrapper:last-child {
-  border-radius: 0 4px 4px 0;
-}
-.ant-radio-button-wrapper:first-child:last-child {
-  border-radius: 4px;
-}
-.ant-radio-button-wrapper:hover,
-.ant-radio-button-wrapper-focused {
-  color: @primary-color;
-}
-.ant-radio-button-wrapper-checked {
-  background: #fff;
-  border-color: @primary-color;
-  color: @primary-color;
-  box-shadow: -1px 0 0 0 @primary-color;
-}
-.ant-radio-button-wrapper-checked::before {
-  background-color: @primary-color !important;
-}
-.ant-radio-button-wrapper-checked:first-child {
-  border-color: @primary-color;
-  box-shadow: none !important;
-}
-.ant-radio-button-wrapper-checked:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: -1px 0 0 0 color(~`colorPalette("@{primary-color}", 5)`);
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-radio-button-wrapper-checked:active {
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-  box-shadow: -1px 0 0 0 color(~`colorPalette("@{primary-color}", 7)`);
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
-  background: @primary-color;
-  border-color: @primary-color;
-  color: #fff;
-}
-.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  background: color(~`colorPalette("@{primary-color}", 5)`);
-  color: #fff;
-}
-.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
-  border-color: color(~`colorPalette("@{primary-color}", 7)`);
-  background: color(~`colorPalette("@{primary-color}", 7)`);
-  color: #fff;
-}
-.ant-radio-button-wrapper-disabled {
-  border-color: #d9d9d9;
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-radio-button-wrapper-disabled:first-child,
-.ant-radio-button-wrapper-disabled:hover {
-  border-color: #d9d9d9;
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-radio-button-wrapper-disabled:first-child {
-  border-left-color: #d9d9d9;
-}
-.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked {
-  color: #fff;
-  background-color: #e6e6e6;
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-rate {
-  color: rgba(0, 0, 0, 0.65);
-  color: #fadb14;
-}
-.ant-rate-star {
-  color: inherit;
-}
-.ant-rate-star-first,
-.ant-rate-star-second {
-  color: #e8e8e8;
-}
-.ant-rate-star-half .ant-rate-star-first,
-.ant-rate-star-full .ant-rate-star-second {
-  color: inherit;
-}
-.ant-select {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select > ul > li > a {
-  background-color: #fff;
-}
-.ant-select-arrow {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-selection {
-  background-color: #fff;
-  border-radius: 4px;
-  border: 1px solid #d9d9d9;
-  border-top-width: 1.02px;
-}
-.ant-select-selection:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-select-focused .ant-select-selection,
-.ant-select-selection:focus,
-.ant-select-selection:active {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-select-selection__clear {
-  background: #fff;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-selection__clear:hover {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-select-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-disabled .ant-select-selection {
-  background: #f5f5f5;
-}
-.ant-select-disabled .ant-select-selection:hover,
-.ant-select-disabled .ant-select-selection:focus,
-.ant-select-disabled .ant-select-selection:active {
-  border-color: #d9d9d9;
-  box-shadow: none;
-}
-.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice {
-  background: #f5f5f5;
-  color: #aaa;
-}
-.ant-select-disabled .ant-select-selection__choice__remove {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-disabled .ant-select-selection__choice__remove:hover {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-selection__placeholder,
-.ant-select-search__field__placeholder {
-  color: #bfbfbf;
-}
-.ant-select-search--inline .ant-select-search__field {
-  border-width: 0;
-  background: transparent;
-  border-radius: 4px;
-}
-.ant-select-selection--multiple .ant-select-selection__choice {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fafafa;
-  border: 1px solid #e8e8e8;
-  border-radius: 2px;
-}
-.ant-select-selection--multiple .ant-select-selection__choice__remove {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-select-selection--multiple .ant-select-selection__choice__remove:hover {
-  color: #404040;
-}
-.ant-select-open .ant-select-selection {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-select-combobox .ant-select-search__field {
-  box-shadow: none;
-}
-.ant-select-dropdown {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-  border-radius: 4px;
-}
-.ant-select-dropdown-menu-item-group-title {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:first-child:not(:last-child),
-.ant-select-dropdown-menu-item-group:not(:last-child) .ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:last-child {
-  border-radius: 0;
-}
-.ant-select-dropdown-menu-item {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-dropdown-menu-item:hover {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-select-dropdown-menu-item:first-child {
-  border-radius: 4px 4px 0 0;
-}
-.ant-select-dropdown-menu-item:last-child {
-  border-radius: 0 0 4px 4px;
-}
-.ant-select-dropdown-menu-item-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-dropdown-menu-item-disabled:hover {
-  color: rgba(0, 0, 0, 0.25);
-  background-color: #fff;
-}
-.ant-select-dropdown-menu-item-selected,
-.ant-select-dropdown-menu-item-selected:hover {
-  background-color: #fafafa;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-dropdown-menu-item-active {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-select-dropdown-menu-item-divider {
-  background-color: #e8e8e8;
-}
-.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item .ant-select-selected-icon {
-  color: transparent;
-}
-.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover .ant-select-selected-icon {
-  color: #ddd;
-}
-.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,
-.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {
-  color: @primary-color;
-}
-.ant-skeleton-header .ant-skeleton-avatar {
-  background: #f2f2f2;
-}
-.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {
-  border-radius: 50%;
-}
-.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {
-  border-radius: 50%;
-}
-.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {
-  border-radius: 50%;
-}
-.ant-skeleton-content .ant-skeleton-title {
-  background: #f2f2f2;
-}
-.ant-skeleton-content .ant-skeleton-paragraph > li {
-  background: #f2f2f2;
-}
-.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title,
-.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {
-  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);
-  background-size: 400% 100%;
-}
-.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {
-  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);
-  background-size: 400% 100%;
-}
-.ant-slider {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-slider-rail {
-  border-radius: 2px;
-  background-color: #f5f5f5;
-}
-.ant-slider-track {
-  border-radius: 4px;
-  background-color: color(~`colorPalette("@{primary-color}", 3)`);
-}
-.ant-slider-handle {
-  border-radius: 50%;
-  border: solid 2px color(~`colorPalette("@{primary-color}", 3)`);
-  background-color: #fff;
-}
-.ant-slider-handle:focus {
-  border-color: #46a6ff;
-  box-shadow: 0 0 0 5px #8cc8ff;
-}
-.ant-slider-handle.ant-tooltip-open {
-  border-color: @primary-color;
-}
-.ant-slider:hover .ant-slider-rail {
-  background-color: #e1e1e1;
-}
-.ant-slider:hover .ant-slider-track {
-  background-color: color(~`colorPalette("@{primary-color}", 4)`);
-}
-.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
-  border-color: color(~`colorPalette("@{primary-color}", 4)`);
-}
-.ant-slider-mark-text {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-slider-mark-text-active {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-slider-step {
-  background: transparent;
-}
-.ant-slider-dot {
-  border: 2px solid #e8e8e8;
-  background-color: #fff;
-  border-radius: 50%;
-}
-.ant-slider-dot-active {
-  border-color: #8cc8ff;
-}
-.ant-slider-disabled .ant-slider-track {
-  background-color: rgba(0, 0, 0, 0.25) !important;
-}
-.ant-slider-disabled .ant-slider-handle,
-.ant-slider-disabled .ant-slider-dot {
-  border-color: rgba(0, 0, 0, 0.25) !important;
-  background-color: #fff;
-  box-shadow: none;
-}
-.ant-spin {
-  color: rgba(0, 0, 0, 0.65);
-  color: @primary-color;
-}
-.ant-spin-blur:after {
-  background: #fff;
-}
-.ant-spin-tip {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-spin-dot i {
-  border-radius: 100%;
-  background-color: @primary-color;
-}
-.ant-steps {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-steps-item-icon {
-  border: 1px solid rgba(0, 0, 0, 0.25);
-  border-radius: 32px;
-}
-.ant-steps-item-icon > .ant-steps-icon {
-  color: @primary-color;
-}
-.ant-steps-item-tail:after {
-  background: #e8e8e8;
-  border-radius: 1px;
-}
-.ant-steps-item-title {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-steps-item-title:after {
-  background: #e8e8e8;
-}
-.ant-steps-item-description {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-steps-item-wait .ant-steps-item-icon {
-  border-color: rgba(0, 0, 0, 0.25);
-  background-color: #fff;
-}
-.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
-  background: rgba(0, 0, 0, 0.25);
-}
-.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title:after {
-  background-color: #e8e8e8;
-}
-.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-description {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-steps-item-wait > .ant-steps-item-tail:after {
-  background-color: #e8e8e8;
-}
-.ant-steps-item-process .ant-steps-item-icon {
-  border-color: @primary-color;
-  background-color: #fff;
-}
-.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
-  color: @primary-color;
-}
-.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
-  background: @primary-color;
-}
-.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title:after {
-  background-color: #e8e8e8;
-}
-.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-description {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-steps-item-process > .ant-steps-item-tail:after {
-  background-color: #e8e8e8;
-}
-.ant-steps-item-process .ant-steps-item-icon {
-  background: @primary-color;
-}
-.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
-  color: #fff;
-}
-.ant-steps-item-finish .ant-steps-item-icon {
-  border-color: @primary-color;
-  background-color: #fff;
-}
-.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
-  color: @primary-color;
-}
-.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
-  background: @primary-color;
-}
-.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title:after {
-  background-color: @primary-color;
-}
-.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-description {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-steps-item-finish > .ant-steps-item-tail:after {
-  background-color: @primary-color;
-}
-.ant-steps-item-error .ant-steps-item-icon {
-  border-color: #f5222d;
-  background-color: #fff;
-}
-.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {
-  color: #f5222d;
-}
-.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
-  background: #f5222d;
-}
-.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title {
-  color: #f5222d;
-}
-.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title:after {
-  background-color: #e8e8e8;
-}
-.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-description {
-  color: #f5222d;
-}
-.ant-steps-item-error > .ant-steps-item-tail:after {
-  background-color: #e8e8e8;
-}
-.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after {
-  background: #f5222d;
-}
-.ant-steps-item-custom .ant-steps-item-icon {
-  background: none;
-  border: 0;
-}
-.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
-  color: @primary-color;
-}
-.ant-steps-small .ant-steps-item-icon {
-  border-radius: 24px;
-}
-.ant-steps-small .ant-steps-item-description {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {
-  border-radius: 0;
-  border: 0;
-  background: none;
-}
-.ant-steps-dot .ant-steps-item-icon {
-  border: 0;
-  background: transparent;
-}
-.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot {
-  border-radius: 100px;
-}
-.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after {
-  background: rgba(0, 0, 0, 0.001);
-}
-.ant-switch {
-  color: rgba(0, 0, 0, 0.65);
-  border-radius: 100px;
-  border: 1px solid transparent;
-  background-color: rgba(0, 0, 0, 0.25);
-}
-.ant-switch-inner {
-  color: #fff;
-}
-.ant-switch-loading-icon,
-.ant-switch:after {
-  border-radius: 18px;
-  background-color: #fff;
-}
-.ant-switch:after {
-  box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);
-}
-.ant-switch-loading-icon {
-  background: transparent;
-}
-.ant-switch-loading .ant-switch-loading-icon {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {
-  color: @primary-color;
-}
-.ant-switch:focus {
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-}
-.ant-switch:focus:hover {
-  box-shadow: none;
-}
-.ant-switch-checked {
-  background-color: @primary-color;
-}
-.ant-table {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-table table {
-  border-collapse: collapse;
-  border-radius: 4px 4px 0 0;
-}
-.ant-table-thead > tr > th {
-  background: #fafafa;
-  color: rgba(0, 0, 0, 0.85);
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-table-thead > tr > th .anticon-filter,
-.ant-table-thead > tr > th .ant-table-filter-icon {
-  color: #bfbfbf;
-}
-.ant-table-thead > tr > th .ant-table-filter-selected.anticon-filter {
-  color: @primary-color;
-}
-.ant-table-thead > tr > th .ant-table-column-sorter {
-  color: #bfbfbf;
-}
-.ant-table-thead > tr > th .ant-table-column-sorter-up.on,
-.ant-table-thead > tr > th .ant-table-column-sorter-down.on {
-  color: @primary-color;
-}
-.ant-table-thead > tr > th.ant-table-column-has-actions:hover {
-  background: #f5f5f5;
-}
-.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter,
-.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon {
-  background: #f5f5f5;
-}
-.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter:hover,
-.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon:hover {
-  color: rgba(0, 0, 0, 0.45);
-  background: #ebebeb;
-}
-.ant-table-thead > tr > th.ant-table-column-has-actions:hover .anticon-filter:active,
-.ant-table-thead > tr > th.ant-table-column-has-actions:hover .ant-table-filter-icon:active {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-table-thead > tr > th.ant-table-column-has-actions .anticon-filter.ant-table-filter-open,
-.ant-table-thead > tr > th.ant-table-column-has-actions .ant-table-filter-icon.ant-table-filter-open {
-  color: rgba(0, 0, 0, 0.45);
-  background: #ebebeb;
-}
-.ant-table-thead > tr > th.ant-table-column-has-actions:active .ant-table-column-sorter-up:not(.on),
-.ant-table-thead > tr > th.ant-table-column-has-actions:active .ant-table-column-sorter-down:not(.on) {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-table-thead > tr > th .ant-table-column-sorters:before {
-  background: transparent;
-}
-.ant-table-thead > tr > th .ant-table-column-sorters:hover:before {
-  background: rgba(0, 0, 0, 0.04);
-}
-.ant-table-thead > tr:first-child > th:first-child {
-  border-top-left-radius: 4px;
-}
-.ant-table-thead > tr:first-child > th:last-child {
-  border-top-right-radius: 4px;
-}
-.ant-table-thead > tr:not(:last-child) > th[colspan] {
-  border-bottom: 0;
-}
-.ant-table-tbody > tr > td {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-table-thead > tr.ant-table-row-hover > td,
-.ant-table-tbody > tr.ant-table-row-hover > td,
-.ant-table-thead > tr:hover > td,
-.ant-table-tbody > tr:hover > td {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-table-thead > tr:hover {
-  background: none;
-}
-.ant-table-footer {
-  background: #fafafa;
-  border-radius: 0 0 4px 4px;
-  border-top: 1px solid #e8e8e8;
-}
-.ant-table-footer:before {
-  background: #fafafa;
-}
-.ant-table.ant-table-bordered .ant-table-footer {
-  border: 1px solid #e8e8e8;
-}
-.ant-table-title {
-  border-radius: 4px 4px 0 0;
-}
-.ant-table.ant-table-bordered .ant-table-title {
-  border: 1px solid #e8e8e8;
-}
-.ant-table-title + .ant-table-content {
-  border-radius: 4px 4px 0 0;
-}
-.ant-table-bordered .ant-table-title + .ant-table-content,
-.ant-table-bordered .ant-table-title + .ant-table-content table,
-.ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th {
-  border-radius: 0;
-}
-.ant-table-without-column-header .ant-table-title + .ant-table-content,
-.ant-table-without-column-header table {
-  border-radius: 0;
-}
-.ant-table-tbody > tr.ant-table-row-selected td {
-  background: #fafafa;
-}
-.ant-table-thead > tr > th.ant-table-column-sort {
-  background: #f5f5f5;
-}
-.ant-table-tbody > tr > td.ant-table-column-sort {
-  background: rgba(0, 0, 0, 0.01);
-}
-.ant-table-header {
-  background: #fafafa;
-}
-.ant-table-header table {
-  border-radius: 4px 4px 0 0;
-}
-.ant-table-loading .ant-table-body {
-  background: #fff;
-}
-.ant-table-bordered .ant-table-header > table,
-.ant-table-bordered .ant-table-body > table,
-.ant-table-bordered .ant-table-fixed-left table,
-.ant-table-bordered .ant-table-fixed-right table {
-  border: 1px solid #e8e8e8;
-  border-right: 0;
-  border-bottom: 0;
-}
-.ant-table-bordered.ant-table-empty .ant-table-placeholder {
-  border-left: 1px solid #e8e8e8;
-  border-right: 1px solid #e8e8e8;
-}
-.ant-table-bordered.ant-table-fixed-header .ant-table-header > table {
-  border-bottom: 0;
-}
-.ant-table-bordered.ant-table-fixed-header .ant-table-body > table {
-  border-top: 0;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table {
-  border-top: 0;
-}
-.ant-table-bordered.ant-table-fixed-header .ant-table-placeholder {
-  border: 0;
-}
-.ant-table-bordered .ant-table-thead > tr:not(:last-child) > th {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-table-bordered .ant-table-thead > tr > th,
-.ant-table-bordered .ant-table-tbody > tr > td {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-table-placeholder {
-  background: #fff;
-  border-bottom: 1px solid #e8e8e8;
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-table-filter-dropdown {
-  background: #fff;
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-table-filter-dropdown .ant-dropdown-menu {
-  border: 0;
-  box-shadow: none;
-  border-radius: 4px 4px 0 0;
-}
-.ant-table-filter-dropdown .ant-dropdown-menu-sub {
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after {
-  color: @primary-color;
-}
-.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child,
-.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title {
-  border-radius: 0;
-}
-.ant-table-filter-dropdown-btns {
-  border-top: 1px solid #e8e8e8;
-}
-.ant-table-filter-dropdown-link {
-  color: @primary-color;
-}
-.ant-table-filter-dropdown-link:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-table-filter-dropdown-link:active {
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-table-selection .anticon-down {
-  color: #bfbfbf;
-}
-.ant-table-selection-menu {
-  background: #fff;
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-table-selection-menu .ant-action-down {
-  color: #bfbfbf;
-}
-.ant-table-selection-down:hover .anticon-down {
-  color: #666;
-}
-.ant-table-row-expand-icon {
-  border: 1px solid #e8e8e8;
-  background: #fff;
-}
-tr.ant-table-expanded-row,
-tr.ant-table-expanded-row:hover {
-  background: #fbfbfb;
-}
-.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
-  background: #fff;
-}
-.ant-table-fixed-left,
-.ant-table-fixed-right {
-  border-radius: 0;
-}
-.ant-table-fixed-left table,
-.ant-table-fixed-right table {
-  background: #fff;
-}
-.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed,
-.ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed {
-  border-radius: 0;
-}
-.ant-table-fixed-left {
-  box-shadow: 6px 0 6px -4px rgba(0, 0, 0, 0.15);
-}
-.ant-table-fixed-left,
-.ant-table-fixed-left table {
-  border-radius: 4px 0 0 0;
-}
-.ant-table-fixed-left .ant-table-thead > tr > th:last-child {
-  border-top-right-radius: 0;
-}
-.ant-table-fixed-right {
-  box-shadow: -6px 0 6px -4px rgba(0, 0, 0, 0.15);
-}
-.ant-table-fixed-right,
-.ant-table-fixed-right table {
-  border-radius: 0 4px 0 0;
-}
-.ant-table-fixed-right .ant-table-expanded-row {
-  color: transparent;
-}
-.ant-table-fixed-right .ant-table-thead > tr > th:first-child {
-  border-top-left-radius: 0;
-}
-.ant-table.ant-table-scroll-position-left .ant-table-fixed-left {
-  box-shadow: none;
-}
-.ant-table.ant-table-scroll-position-right .ant-table-fixed-right {
-  box-shadow: none;
-}
-.ant-table-small {
-  border: 1px solid #e8e8e8;
-  border-radius: 4px;
-}
-.ant-table-small > .ant-table-title {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-table-small > .ant-table-content > .ant-table-header > table,
-.ant-table-small > .ant-table-content > .ant-table-body > table,
-.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table,
-.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table,
-.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table,
-.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table,
-.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table,
-.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table {
-  border: 0;
-}
-.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th,
-.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th,
-.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th,
-.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th,
-.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th,
-.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th,
-.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th,
-.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th {
-  background: #fff;
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-table-small > .ant-table-content .ant-table-header {
-  background: #fff;
-}
-.ant-table-small > .ant-table-content .ant-table-placeholder,
-.ant-table-small > .ant-table-content .ant-table-row:last-child td {
-  border-bottom: 0;
-}
-.ant-table-small.ant-table-bordered {
-  border-right: 0;
-}
-.ant-table-small.ant-table-bordered .ant-table-title {
-  border: 0;
-  border-bottom: 1px solid #e8e8e8;
-  border-right: 1px solid #e8e8e8;
-}
-.ant-table-small.ant-table-bordered .ant-table-content {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-table-small.ant-table-bordered .ant-table-footer {
-  border: 0;
-  border-top: 1px solid #e8e8e8;
-  border-right: 1px solid #e8e8e8;
-}
-.ant-table-small.ant-table-bordered .ant-table-placeholder {
-  border-left: 0;
-  border-bottom: 0;
-}
-.ant-table-small.ant-table-bordered .ant-table-thead > tr > th:last-child,
-.ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child {
-  border-right: none;
-}
-.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-thead > tr > th:last-child,
-.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-tbody > tr > td:last-child {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-table-small.ant-table-bordered .ant-table-fixed-right {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab {
-  border: 1px solid #e8e8e8;
-  border-bottom: 0;
-  border-radius: 4px 4px 0 0;
-  background: #fafafa;
-}
-.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active {
-  background: #fff;
-  border-color: #e8e8e8;
-  color: @primary-color;
-}
-.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .ant-tabs-close-x {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-tabs.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab .ant-tabs-close-x:hover {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-tabs-extra-content .ant-tabs-new-tab {
-  border-radius: 2px;
-  border: 1px solid #e8e8e8;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tabs-extra-content .ant-tabs-new-tab:hover {
-  color: @primary-color;
-  border-color: @primary-color;
-}
-.ant-tabs-vertical.ant-tabs-card > .ant-tabs-bar .ant-tabs-tab {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-tabs-vertical.ant-tabs-card.ant-tabs-left > .ant-tabs-bar .ant-tabs-tab {
-  border-right: 0;
-  border-radius: 4px 0 0 4px;
-}
-.ant-tabs-vertical.ant-tabs-card.ant-tabs-right > .ant-tabs-bar .ant-tabs-tab {
-  border-left: 0;
-  border-radius: 0 4px 4px 0;
-}
-.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab {
-  border-bottom: 1px solid #e8e8e8;
-  border-top: 0;
-  border-radius: 0 0 4px 4px;
-}
-.ant-tabs.ant-tabs-card.ant-tabs-bottom > .ant-tabs-bar .ant-tabs-tab-active {
-  color: @primary-color;
-}
-.ant-tabs {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tabs-ink-bar {
-  background-color: @primary-color;
-}
-.ant-tabs-bar {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-tabs-bottom .ant-tabs-bar {
-  border-bottom: none;
-  border-top: 1px solid #e8e8e8;
-}
-.ant-tabs-tab-prev,
-.ant-tabs-tab-next {
-  border: 0;
-  background-color: transparent;
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-tabs-tab-prev:hover,
-.ant-tabs-tab-next:hover {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tabs-tab-btn-disabled,
-.ant-tabs-tab-btn-disabled:hover {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-tabs-nav .ant-tabs-tab-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-tabs-nav .ant-tabs-tab:hover {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-tabs-nav .ant-tabs-tab:active {
-  color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-tabs-nav .ant-tabs-tab-active {
-  color: @primary-color;
-}
-.ant-tabs-vertical > .ant-tabs-bar {
-  border-bottom: 0;
-}
-.ant-tabs-vertical.ant-tabs-left > .ant-tabs-bar {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-tabs-vertical.ant-tabs-left > .ant-tabs-content {
-  border-left: 1px solid #e8e8e8;
-}
-.ant-tabs-vertical.ant-tabs-right > .ant-tabs-bar {
-  border-left: 1px solid #e8e8e8;
-}
-.ant-tabs-vertical.ant-tabs-right > .ant-tabs-content {
-  border-right: 1px solid #e8e8e8;
-}
-.ant-tag {
-  color: rgba(0, 0, 0, 0.65);
-  border-radius: 4px;
-  border: 1px solid #d9d9d9;
-  background: #fafafa;
-}
-.ant-tag,
-.ant-tag a,
-.ant-tag a:hover {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tag .anticon-close {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-tag .anticon-close:hover {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-tag-has-color {
-  border-color: transparent;
-}
-.ant-tag-has-color,
-.ant-tag-has-color a,
-.ant-tag-has-color a:hover,
-.ant-tag-has-color .anticon-close,
-.ant-tag-has-color .anticon-close:hover {
-  color: #fff;
-}
-.ant-tag-checkable {
-  background-color: transparent;
-  border-color: transparent;
-}
-.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {
-  color: @primary-color;
-}
-.ant-tag-checkable:active,
-.ant-tag-checkable-checked {
-  color: #fff;
-}
-.ant-tag-checkable-checked {
-  background-color: @primary-color;
-}
-.ant-tag-checkable:active {
-  background-color: color(~`colorPalette("@{primary-color}", 7)`);
-}
-.ant-tag-pink {
-  color: #eb2f96;
-  background: #fff0f6;
-  border-color: #ffadd2;
-}
-.ant-tag-pink-inverse {
-  background: #eb2f96;
-  border-color: #eb2f96;
-  color: #fff;
-}
-.ant-tag-magenta {
-  color: #eb2f96;
-  background: #fff0f6;
-  border-color: #ffadd2;
-}
-.ant-tag-magenta-inverse {
-  background: #eb2f96;
-  border-color: #eb2f96;
-  color: #fff;
-}
-.ant-tag-red {
-  color: #f5222d;
-  background: #fff1f0;
-  border-color: #ffa39e;
-}
-.ant-tag-red-inverse {
-  background: #f5222d;
-  border-color: #f5222d;
-  color: #fff;
-}
-.ant-tag-volcano {
-  color: #fa541c;
-  background: #fff2e8;
-  border-color: #ffbb96;
-}
-.ant-tag-volcano-inverse {
-  background: #fa541c;
-  border-color: #fa541c;
-  color: #fff;
-}
-.ant-tag-orange {
-  color: #fa8c16;
-  background: #fff7e6;
-  border-color: #ffd591;
-}
-.ant-tag-orange-inverse {
-  background: #fa8c16;
-  border-color: #fa8c16;
-  color: #fff;
-}
-.ant-tag-yellow {
-  color: #fadb14;
-  background: #feffe6;
-  border-color: #fffb8f;
-}
-.ant-tag-yellow-inverse {
-  background: #fadb14;
-  border-color: #fadb14;
-  color: #fff;
-}
-.ant-tag-gold {
-  color: #faad14;
-  background: #fffbe6;
-  border-color: #ffe58f;
-}
-.ant-tag-gold-inverse {
-  background: #faad14;
-  border-color: #faad14;
-  color: #fff;
-}
-.ant-tag-cyan {
-  color: #13c2c2;
-  background: #e6fffb;
-  border-color: #87e8de;
-}
-.ant-tag-cyan-inverse {
-  background: #13c2c2;
-  border-color: #13c2c2;
-  color: #fff;
-}
-.ant-tag-lime {
-  color: #a0d911;
-  background: #fcffe6;
-  border-color: #eaff8f;
-}
-.ant-tag-lime-inverse {
-  background: #a0d911;
-  border-color: #a0d911;
-  color: #fff;
-}
-.ant-tag-green {
-  color: #52c41a;
-  background: #f6ffed;
-  border-color: #b7eb8f;
-}
-.ant-tag-green-inverse {
-  background: #52c41a;
-  border-color: #52c41a;
-  color: #fff;
-}
-.ant-tag-blue {
-  color: @primary-color;
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-  border-color: color(~`colorPalette("@{primary-color}", 3)`);
-}
-.ant-tag-blue-inverse {
-  background: @primary-color;
-  border-color: @primary-color;
-  color: #fff;
-}
-.ant-tag-geekblue {
-  color: #2f54eb;
-  background: #f0f5ff;
-  border-color: #adc6ff;
-}
-.ant-tag-geekblue-inverse {
-  background: #2f54eb;
-  border-color: #2f54eb;
-  color: #fff;
-}
-.ant-tag-purple {
-  color: #722ed1;
-  background: #f9f0ff;
-  border-color: #d3adf7;
-}
-.ant-tag-purple-inverse {
-  background: #722ed1;
-  border-color: #722ed1;
-  color: #fff;
-}
-.ant-time-picker-panel {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-time-picker-panel-inner {
-  background-color: #fff;
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-  background-clip: padding-box;
-}
-.ant-time-picker-panel-input {
-  border: 0;
-}
-.ant-time-picker-panel-input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-time-picker-panel-input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-time-picker-panel-input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-time-picker-panel-input-wrap {
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-time-picker-panel-input-invalid {
-  border-color: red;
-}
-.ant-time-picker-panel-clear-btn-icon svg {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-time-picker-panel-clear-btn-icon svg:hover {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-time-picker-panel-select {
-  border-left: 1px solid #e8e8e8;
-}
-.ant-time-picker-panel-select:first-child {
-  border-left: 0;
-}
-.ant-time-picker-panel-select:last-child {
-  border-right: 0;
-}
-.ant-time-picker-panel-select li:hover {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-li.ant-time-picker-panel-select-option-selected {
-  background: #f5f5f5;
-}
-li.ant-time-picker-panel-select-option-selected:hover {
-  background: #f5f5f5;
-}
-li.ant-time-picker-panel-select-option-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-li.ant-time-picker-panel-select-option-disabled:hover {
-  background: transparent;
-}
-.ant-time-picker-panel-addon {
-  border-top: 1px solid #e8e8e8;
-}
-.ant-time-picker {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-time-picker-input {
-  color: rgba(0, 0, 0, 0.65);
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-time-picker-input::-moz-placeholder {
-  color: #bfbfbf;
-}
-.ant-time-picker-input:-ms-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-time-picker-input::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-.ant-time-picker-input:hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  border-right-width: 1px !important;
-}
-.ant-time-picker-input:focus {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
-  border-right-width: 1px !important;
-}
-.ant-time-picker-input-disabled {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-time-picker-input-disabled:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-time-picker-input[disabled] {
-  background-color: #f5f5f5;
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-time-picker-input[disabled]:hover {
-  border-color: #e6d8d8;
-  border-right-width: 1px !important;
-}
-.ant-time-picker-icon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-time-picker-icon .ant-time-picker-clock-icon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-timeline {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-timeline-item-tail {
-  border-left: 2px solid #e8e8e8;
-}
-.ant-timeline-item-head {
-  background-color: #fff;
-  border-radius: 100px;
-  border: 2px solid transparent;
-}
-.ant-timeline-item-head-blue {
-  border-color: @primary-color;
-  color: @primary-color;
-}
-.ant-timeline-item-head-red {
-  border-color: #f5222d;
-  color: #f5222d;
-}
-.ant-timeline-item-head-green {
-  border-color: #52c41a;
-  color: #52c41a;
-}
-.ant-timeline-item-head-custom {
-  border: 0;
-  border-radius: 0;
-}
-.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {
-  border-left: 2px dotted #e8e8e8;
-}
-.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {
-  border-left: 2px dotted #e8e8e8;
-}
-.ant-tooltip {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tooltip-inner {
-  color: #fff;
-  background-color: rgba(0, 0, 0, 0.75);
-  border-radius: 4px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
-}
-.ant-tooltip-arrow {
-  border-color: transparent;
-  border-style: solid;
-}
-.ant-tooltip-placement-top .ant-tooltip-arrow,
-.ant-tooltip-placement-topLeft .ant-tooltip-arrow,
-.ant-tooltip-placement-topRight .ant-tooltip-arrow {
-  border-width: 5px 5px 0;
-  border-top-color: rgba(0, 0, 0, 0.75);
-}
-.ant-tooltip-placement-right .ant-tooltip-arrow,
-.ant-tooltip-placement-rightTop .ant-tooltip-arrow,
-.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {
-  border-width: 5px 5px 5px 0;
-  border-right-color: rgba(0, 0, 0, 0.75);
-}
-.ant-tooltip-placement-left .ant-tooltip-arrow,
-.ant-tooltip-placement-leftTop .ant-tooltip-arrow,
-.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {
-  border-width: 5px 0 5px 5px;
-  border-left-color: rgba(0, 0, 0, 0.75);
-}
-.ant-tooltip-placement-bottom .ant-tooltip-arrow,
-.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,
-.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {
-  border-width: 0 5px 5px;
-  border-bottom-color: rgba(0, 0, 0, 0.75);
-}
-.ant-transfer {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-transfer-disabled .ant-transfer-list {
-  background: #f5f5f5;
-}
-.ant-transfer-list {
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-transfer-list-search-action {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-transfer-list-search-action .anticon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-transfer-list-search-action .anticon:hover {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-transfer-list-header {
-  border-radius: 4px 4px 0 0;
-  background: #fff;
-  color: rgba(0, 0, 0, 0.65);
-  border-bottom: 1px solid #e8e8e8;
-}
-.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-transfer-list-content-item-disabled {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-transfer-list-body-not-found {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-transfer-list-footer {
-  border-top: 1px solid #e8e8e8;
-  border-radius: 0 0 4px 4px;
-}
-.ant-select-tree-checkbox {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner,
-.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner,
-.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner {
-  border-color: @primary-color;
-}
-.ant-select-tree-checkbox-checked:after {
-  border-radius: 2px;
-  border: 1px solid @primary-color;
-}
-.ant-select-tree-checkbox-inner {
-  border: 1px solid #d9d9d9;
-  border-radius: 2px;
-  background-color: #fff;
-}
-.ant-select-tree-checkbox-inner:after {
-  border: 2px solid #fff;
-  border-top: 0;
-  border-left: 0;
-}
-.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after {
-  border: 0;
-  background-color: @primary-color;
-}
-.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after {
-  border: 2px solid #fff;
-  border-top: 0;
-  border-left: 0;
-}
-.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {
-  background-color: @primary-color;
-  border-color: @primary-color;
-}
-.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner {
-  border-color: #d9d9d9 !important;
-  background-color: #f5f5f5;
-}
-.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after {
-  border-color: #f5f5f5;
-}
-.ant-select-tree-checkbox-disabled + span {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-select-tree-checkbox-wrapper {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-tree-checkbox-group {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-tree {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-tree li .ant-select-tree-node-content-wrapper {
-  border-radius: 2px;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-tree li .ant-select-tree-node-content-wrapper:hover {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {
-  background-color: color(~`colorPalette("@{primary-color}", 2)`);
-}
-.ant-select-tree li span.ant-select-tree-switcher,
-.ant-select-tree li span.ant-select-tree-iconEle {
-  border: 0 none;
-}
-.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon {
-  color: @primary-color;
-}
-.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon,
-.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon {
-  color: @primary-color;
-}
-li.ant-select-tree-treenode-disabled > span:not(.ant-select-tree-switcher),
-li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper,
-li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper span {
-  color: rgba(0, 0, 0, 0.25);
-}
-li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper:hover {
-  background: transparent;
-}
-.ant-select-tree-dropdown {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field {
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-}
-.ant-select-tree-dropdown .ant-select-not-found {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper {
-  border-radius: 0;
-}
-.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover {
-  background: transparent;
-}
-.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover:before,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover:before {
-  background: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper.ant-tree-node-selected,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper.ant-tree-node-selected {
-  color: #fff;
-  background: transparent;
-}
-.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-switcher,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-switcher {
-  color: #fff;
-}
-.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner {
-  border-color: @primary-color;
-}
-.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after {
-  border-color: #fff;
-}
-.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner {
-  background: #fff;
-}
-.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after {
-  border-color: @primary-color;
-}
-.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before,
-.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before {
-  background: @primary-color;
-}
-.ant-tree-checkbox {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,
-.ant-tree-checkbox:hover .ant-tree-checkbox-inner,
-.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner {
-  border-color: @primary-color;
-}
-.ant-tree-checkbox-checked:after {
-  border-radius: 2px;
-  border: 1px solid @primary-color;
-}
-.ant-tree-checkbox-inner {
-  border: 1px solid #d9d9d9;
-  border-radius: 2px;
-  background-color: #fff;
-}
-.ant-tree-checkbox-inner:after {
-  border: 2px solid #fff;
-  border-top: 0;
-  border-left: 0;
-}
-.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after {
-  border: 0;
-  background-color: @primary-color;
-}
-.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after {
-  border: 2px solid #fff;
-  border-top: 0;
-  border-left: 0;
-}
-.ant-tree-checkbox-checked .ant-tree-checkbox-inner {
-  background-color: @primary-color;
-  border-color: @primary-color;
-}
-.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-.ant-tree-checkbox-disabled .ant-tree-checkbox-inner {
-  border-color: #d9d9d9 !important;
-  background-color: #f5f5f5;
-}
-.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after {
-  border-color: #f5f5f5;
-}
-.ant-tree-checkbox-disabled + span {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-tree-checkbox-wrapper {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tree-checkbox-group {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tree {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tree li span[draggable],
-.ant-tree li span[draggable="true"] {
-  border-top: 2px transparent solid;
-  border-bottom: 2px transparent solid;
-}
-.ant-tree li.drag-over > span[draggable] {
-  background-color: @primary-color;
-  color: white;
-}
-.ant-tree li.drag-over-gap-top > span[draggable] {
-  border-top-color: @primary-color;
-}
-.ant-tree li.drag-over-gap-bottom > span[draggable] {
-  border-bottom-color: @primary-color;
-}
-.ant-tree li.filter-node > span {
-  color: #f5222d !important;
-}
-.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon,
-.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon {
-  color: @primary-color;
-}
-.ant-tree li .ant-tree-node-content-wrapper {
-  border-radius: 2px;
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-tree li .ant-tree-node-content-wrapper:hover {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected {
-  background-color: color(~`colorPalette("@{primary-color}", 2)`);
-}
-.ant-tree li span.ant-tree-switcher,
-.ant-tree li span.ant-tree-iconEle {
-  border: 0 none;
-}
-li.ant-tree-treenode-disabled > span:not(.ant-tree-switcher),
-li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper,
-li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span {
-  color: rgba(0, 0, 0, 0.25);
-}
-li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover {
-  background: transparent;
-}
-.ant-tree.ant-tree-show-line li span.ant-tree-switcher {
-  background: #fff;
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-tree.ant-tree-show-line li:not(:last-child):before {
-  border-left: 1px solid #d9d9d9;
-}
-.ant-upload {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-upload.ant-upload-select-picture-card {
-  border: 1px dashed #d9d9d9;
-  border-radius: 4px;
-  background-color: #fafafa;
-}
-.ant-upload.ant-upload-select-picture-card:hover {
-  border-color: @primary-color;
-}
-.ant-upload.ant-upload-drag {
-  border: 1px dashed #d9d9d9;
-  border-radius: 4px;
-  background: #fafafa;
-}
-.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {
-  border: 2px dashed color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {
-  border-color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {
-  color: color(~`colorPalette("@{primary-color}", 5)`);
-}
-.ant-upload.ant-upload-drag p.ant-upload-text {
-  color: rgba(0, 0, 0, 0.85);
-}
-.ant-upload.ant-upload-drag p.ant-upload-hint {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-upload.ant-upload-drag .anticon-plus {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-upload.ant-upload-drag .anticon-plus:hover {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-upload.ant-upload-drag:hover .anticon-plus {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-upload-list {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-upload-list-item-info .anticon-loading,
-.ant-upload-list-item-info .anticon-paper-clip {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-upload-list-item .anticon-close {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-upload-list-item .anticon-close:hover {
-  color: rgba(0, 0, 0, 0.65);
-}
-.ant-upload-list-item:hover .ant-upload-list-item-info {
-  background-color: color(~`colorPalette("@{primary-color}", 1)`);
-}
-.ant-upload-list-item-error,
-.ant-upload-list-item-error .anticon-paper-clip,
-.ant-upload-list-item-error .ant-upload-list-item-name {
-  color: #f5222d;
-}
-.ant-upload-list-item-error .anticon-close {
-  color: #f5222d !important;
-}
-.ant-upload-list-picture .ant-upload-list-item,
-.ant-upload-list-picture-card .ant-upload-list-item {
-  border-radius: 4px;
-  border: 1px solid #d9d9d9;
-}
-.ant-upload-list-picture .ant-upload-list-item:hover,
-.ant-upload-list-picture-card .ant-upload-list-item:hover {
-  background: transparent;
-}
-.ant-upload-list-picture .ant-upload-list-item-error,
-.ant-upload-list-picture-card .ant-upload-list-item-error {
-  border-color: #f5222d;
-}
-.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info,
-.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {
-  background: transparent;
-}
-.ant-upload-list-picture .ant-upload-list-item-uploading,
-.ant-upload-list-picture-card .ant-upload-list-item-uploading {
-  border-style: dashed;
-}
-.ant-upload-list-picture .ant-upload-list-item-icon,
-.ant-upload-list-picture-card .ant-upload-list-item-icon {
-  color: rgba(0, 0, 0, 0.25);
-}
-.ant-upload-list-picture .ant-upload-list-item-thumbnail.anticon:before,
-.ant-upload-list-picture-card .ant-upload-list-item-thumbnail.anticon:before {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-upload-list-picture-card .ant-upload-list-item-info:before {
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o,
-.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {
-  color: rgba(255, 255, 255, 0.85);
-}
-.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o:hover,
-.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {
-  color: #fff;
-}
-.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {
-  background-color: #fafafa;
-}
-.ant-upload-list-picture-card .ant-upload-list-item-uploading-text {
-  color: rgba(0, 0, 0, 0.45);
-}
-.ant-upload-list .ant-upload-success-icon {
-  color: #52c41a;
-}
-
-.drawer .drawer-content {
-  background: #001529;
-}
-
-.ant-list-item-meta .taobao {
-  color: #ff4000;
-  border-radius: 4px;
-}
-.ant-list-item-meta .dingding {
-  background-color: #2eabff;
-  color: #fff;
-  border-radius: 4px;
-}
-.ant-list-item-meta .alipay {
-  color: #2eabff;
-  border-radius: 4px;
-}
-font.strong {
-  color: #52c41a;
-}
-font.medium {
-  color: #faad14;
-}
-font.weak {
-  color: #f5222d;
-}
diff --git a/submarine-workbench/workbench-web/public/index.html b/submarine-workbench/workbench-web/public/index.html
deleted file mode 100644
index 2806d2c..0000000
--- a/submarine-workbench/workbench-web/public/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-cmn-Hans">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="icon" href="<%= BASE_URL %>logo.png">
-    <title>Submarine Workbench</title>
-    <style>#loading-mask{position:fixed;left:0;top:0;height:100%;width:100%;background:#fff;user-select:none;z-index:9999;overflow:hidden}.loading-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%)}.loading-dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:64px;width:64px;height:64px;box-sizing:border-box}.loading-dot i{width:22px;height:22px;position:absolute;display:block;background-color:#1890f [...]
-  </head>
-  <body>
-    <noscript>
-      <strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
-    </noscript>
-    <div id="app">
-      <div id="loading-mask">
-          <div class="loading-wrapper">
-            <span class="loading-dot loading-dot-spin"><i></i><i></i><i></i><i></i></span>
-          </div>
-        </div>
-    </div>
-    <!-- built files will be auto injected -->
-  </body>
-</html>
diff --git a/submarine-workbench/workbench-web/public/loading/loading.css b/submarine-workbench/workbench-web/public/loading/loading.css
deleted file mode 100644
index a899eac..0000000
--- a/submarine-workbench/workbench-web/public/loading/loading.css
+++ /dev/null
@@ -1 +0,0 @@
-#preloadingAnimation{position:fixed;left:0;top:0;height:100%;width:100%;background:#ffffff;user-select:none;z-index: 9999;overflow: hidden}.lds-roller{display:inline-block;position:relative;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;}.lds-roller div{animation:lds-roller 1.2s cubic-bezier(0.5,0,0.5,1) infinite;transform-origin:32px 32px;}.lds-roller div:after{content:" ";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#13c2c2;m [...]
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/public/loading/loading.html b/submarine-workbench/workbench-web/public/loading/loading.html
deleted file mode 100644
index 9b93196..0000000
--- a/submarine-workbench/workbench-web/public/loading/loading.html
+++ /dev/null
@@ -1 +0,0 @@
-<div id="preloadingAnimation"><div class=lds-roller><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class=load-tips>Loading</div></div>
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/public/loading/option2/html_code_segment.html b/submarine-workbench/workbench-web/public/loading/option2/html_code_segment.html
deleted file mode 100644
index df81b26..0000000
--- a/submarine-workbench/workbench-web/public/loading/option2/html_code_segment.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<div class="preloading-animate">
-  <div class="preloading-wrapper">
-    <svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinit [...]
-  </div>
-</div>
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/public/loading/option2/loading.css b/submarine-workbench/workbench-web/public/loading/option2/loading.css
deleted file mode 100644
index c35cd73..0000000
--- a/submarine-workbench/workbench-web/public/loading/option2/loading.css
+++ /dev/null
@@ -1 +0,0 @@
-.preloading-animate{background:#ffffff;width:100%;height:100%;position:fixed;left:0;top:0;z-index:299;}.preloading-animate .preloading-wrapper{position:absolute;width:5rem;height:5rem;left:50%;top:50%;transform:translate(-50%,-50%);}.preloading-animate .preloading-wrapper .preloading-balls{font-size:5rem;}
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/public/loading/option2/loading.svg b/submarine-workbench/workbench-web/public/loading/option2/loading.svg
deleted file mode 100644
index 7ff7322..0000000
--- a/submarine-workbench/workbench-web/public/loading/option2/loading.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/> [...]
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/public/logo.png b/submarine-workbench/workbench-web/public/logo.png
deleted file mode 100644
index ff55ec2..0000000
Binary files a/submarine-workbench/workbench-web/public/logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/src/App.vue b/submarine-workbench/workbench-web/src/App.vue
deleted file mode 100644
index 77ceca8..0000000
--- a/submarine-workbench/workbench-web/src/App.vue
+++ /dev/null
@@ -1,29 +0,0 @@
-<template>
-  <a-locale-provider :locale="locale">
-    <div id="app">
-      <router-view/>
-    </div>
-  </a-locale-provider>
-</template>
-
-<script>
-import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
-import { AppDeviceEnquire } from '@/utils/mixin'
-
-export default {
-  mixins: [AppDeviceEnquire],
-  data () {
-    return {
-      locale: zhCN
-    }
-  },
-  mounted () {
-
-  }
-}
-</script>
-<style>
-  #app {
-    height: 100%;
-  }
-</style>
diff --git a/submarine-workbench/workbench-web/src/WEB-INF/web.xml b/submarine-workbench/workbench-web/src/WEB-INF/web.xml
deleted file mode 100644
index 592cb76..0000000
--- a/submarine-workbench/workbench-web/src/WEB-INF/web.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You 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.
-  -->
-
-<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
-         version="3.0">
-
- <display-name>workbench-web</display-name>
-  <servlet>
-    <servlet-name>default</servlet-name>
-    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
-    <init-param>
-      <param-name>jersey.config.server.provider.packages</param-name>
-      <param-value>org.apache.submarine.rest</param-value>
-    </init-param>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-
-  <context-param>
-    <param-name>configuration</param-name>
-    <param-value>deployment</param-value>
-  </context-param>
-
-  <session-config>
-    <cookie-config>
-      <http-only>true</http-only>
-      <secure>true</secure>
-    </cookie-config>
-  </session-config>
-</web-app>
diff --git a/submarine-workbench/workbench-web/src/api/index.js b/submarine-workbench/workbench-web/src/api/index.js
deleted file mode 100644
index 49855cb..0000000
--- a/submarine-workbench/workbench-web/src/api/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const api = {
-  Login: '/auth/login',
-  Logout: '/auth/logout',
-  ForgePassword: '/auth/forge-password',
-  Register: '/auth/register',
-  twoStepCode: '/auth/2step-code',
-  SendSms: '/account/sms',
-  SendSmsErr: '/account/sms_err',
-  // get my info
-  UserInfo: '/sys/user/info'
-}
-export default api
diff --git a/submarine-workbench/workbench-web/src/api/login.js b/submarine-workbench/workbench-web/src/api/login.js
deleted file mode 100644
index f96f3ed..0000000
--- a/submarine-workbench/workbench-web/src/api/login.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import api from './index'
-import { axios } from '@/utils/request'
-
-/**
- * login func
- * parameter: {
- *     username: '',
- *     password: '',
- *     remember_me: true,
- *     captcha: '12345'
- * }
- * @param parameter
- * @returns {*}
- */
-export function login (parameter) {
-  return axios({
-    url: '/auth/login',
-    method: 'post',
-    data: parameter
-  })
-}
-
-export function getSmsCaptcha (parameter) {
-  return axios({
-    url: api.SendSms,
-    method: 'post',
-    data: parameter
-  })
-}
-
-export function getInfo () {
-  return axios({
-    url: '/sys/user/info',
-    method: 'get',
-    headers: {
-      'Content-Type': 'application/json;charset=UTF-8'
-    }
-  })
-}
-
-export function logout () {
-  return axios({
-    url: '/auth/logout',
-    method: 'post',
-    headers: {
-      'Content-Type': 'application/json;charset=UTF-8'
-    }
-  })
-}
-
-/**
- * get user 2step code open?
- * @param parameter {*}
- */
-export function get2step (parameter) {
-  return axios({
-    url: api.twoStepCode,
-    method: 'post',
-    data: parameter
-  })
-}
diff --git a/submarine-workbench/workbench-web/src/api/manage.js b/submarine-workbench/workbench-web/src/api/manage.js
deleted file mode 100644
index f682d7e..0000000
--- a/submarine-workbench/workbench-web/src/api/manage.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import { axios } from '@/utils/request'
-
-const api = {
-  user: '/user',
-  role: '/role',
-  service: '/service',
-  permission: '/permission',
-  permissionNoPager: '/permission/no-pager',
-  orgTree: '/org/tree'
-}
-
-export default api
-
-// post
-export function postAction (url, parameter) {
-  return axios({
-    url: url,
-    method: 'post',
-    data: parameter
-  })
-}
-
-// post method= {post | put}
-export function httpAction (url, parameter, method) {
-  return axios({
-    url: url,
-    method: method,
-    data: parameter
-  })
-}
-
-// put
-export function putAction (url, parameter) {
-  return axios({
-    url: url,
-    method: 'put',
-    data: parameter
-  })
-}
-
-// get
-export function getAction (url, parameter) {
-  return axios({
-    url: url,
-    method: 'get',
-    params: parameter
-  })
-}
-
-// deleteAction
-export function deleteAction (url, parameter) {
-  return axios({
-    url: url,
-    method: 'delete',
-    params: parameter
-  })
-}
-
-export function getUserList (parameter) {
-  return axios({
-    url: api.user,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getRoleList (parameter) {
-  return axios({
-    url: api.role,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getServiceList (parameter) {
-  return axios({
-    url: api.service,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getPermissions (parameter) {
-  return axios({
-    url: api.permissionNoPager,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getOrgTree (parameter) {
-  return axios({
-    url: api.orgTree,
-    method: 'get',
-    params: parameter
-  })
-}
-
-// id == 0 add     post
-// id != 0 update  put
-export function saveService (parameter) {
-  return axios({
-    url: api.service,
-    method: parameter.id === 0 ? 'post' : 'put',
-    data: parameter
-  })
-}
diff --git a/submarine-workbench/workbench-web/src/api/system.js b/submarine-workbench/workbench-web/src/api/system.js
deleted file mode 100644
index b2b6ddb..0000000
--- a/submarine-workbench/workbench-web/src/api/system.js
+++ /dev/null
@@ -1,79 +0,0 @@
-import { getAction, putAction, postAction, deleteAction } from '@/api/manage'
-
-// 用户管理
-const addUser = (params) => postAction('/sys/user/add', params)
-const editUser = (params) => putAction('/sys/user/edit', params)
-const queryUserRole = (params) => getAction('/sys/user/queryUserRole', params)
-const getUserList = (params) => getAction('/sys/user/list', params)
-const frozenBatch = (params) => putAction('/sys/user/frozenBatch', params)
-// 验证用户是否存在
-const checkOnlyUser = (params) => getAction('/sys/user/checkOnlyUser', params)
-// change Password
-const changePassword = (params) => putAction('/sys/user/changePassword', params)
-
-// 数据字典
-const addDict = (params) => postAction('/sys/dict/add', params)
-const editDict = (params) => putAction('/sys/dict/edit', params)
-const treeList = (params) => getAction('/sys/dict/treeList', params)
-const addDictItem = (params) => postAction('/sys/dictItem/add', params)
-const editDictItem = (params) => putAction('/sys/dictItem/edit', params)
-
-const duplicateCheck = (params) => getAction('/sys/duplicateCheck', params)
-const searchSelect = (tableName, params) => getAction(`/sys/searchSelect/${tableName}`, params)
-
-// department
-const addDept = (params) => postAction('/sys/dept/add', params)
-const editDept = (params) => putAction('/sys/dept/edit', params)
-const queryDepartTreeList = (params) => getAction('/sys/dept/tree', params)
-const searchByKeywords = (params) => getAction('/sys/dept/searchBy', params)
-const deleteByDepartId = (params) => deleteAction('/sys/dept/delete', params)
-const queryIdTree = (params) => getAction('/sys/dept/queryIdTree', params)
-const resetParentDept = (params) => putAction('/sys/dept/resetParentDept', params)
-
-// Dict
-const ajaxGetDictItems = (code, params) => getAction(`/sys/dictItem/getDictItems/${code}`, params)
-
-// team
-const queryTeam = (params) => getAction('/team/list', params)
-const addTeam = (params) => postAction('/team/add', params)
-const editTeam = (params) => putAction('/team/edit', params)
-const deleteTeam = (params) => deleteAction('/team/delete', params)
-
-// project
-const queryProject = (params) => getAction('/project/list', params)
-const addProject = (params) => postAction('/project/add', params)
-const editProject = (params) => putAction('/project/edit', params)
-const deleteProject = (params) => deleteAction('/project/delete', params)
-
-export {
-  ajaxGetDictItems,
-  addUser,
-  editUser,
-  queryUserRole,
-  getUserList,
-  frozenBatch,
-  checkOnlyUser,
-  changePassword,
-  addDict,
-  editDict,
-  treeList,
-  addDictItem,
-  editDictItem,
-  duplicateCheck,
-  searchSelect,
-  addDept,
-  editDept,
-  queryDepartTreeList,
-  searchByKeywords,
-  deleteByDepartId,
-  queryIdTree,
-  resetParentDept,
-  queryTeam,
-  addTeam,
-  editTeam,
-  deleteTeam,
-  queryProject,
-  addProject,
-  editProject,
-  deleteProject
-}
diff --git a/submarine-workbench/workbench-web/src/api/workbench.js b/submarine-workbench/workbench-web/src/api/workbench.js
deleted file mode 100644
index f6fdc68..0000000
--- a/submarine-workbench/workbench-web/src/api/workbench.js
+++ /dev/null
@@ -1,87 +0,0 @@
-import { axios } from '@/utils/request'
-
-const api = {
-  workspaceRecent: '/workbench/workspace/recent',
-  workspaceRecentFiles: '/workspace/recent/files',
-  actuatorList: '/workspace/actuator/list',
-  jobList: '/workspace/job/list',
-  dataTables: '/workspace/data/tables',
-  databases: '/workspace/data/databases',
-  schemaColumnsData: '/workspace/data/columns',
-  tableColumns: '/workspace/data/tableColumns',
-  sampleData: '/workspace/data/sample'
-}
-
-// export default api
-
-export function getWorkspaceRecent (parameter) {
-  return axios({
-    url: api.workspaceRecent,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getWorkspaceRecentFiles (parameter) {
-  return axios({
-    url: api.workspaceRecentFiles,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getActuatorList (parameter) {
-  return axios({
-    url: api.actuatorList,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getJobList (parameter) {
-  return axios({
-    url: api.jobList,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getDatabases (parameter) {
-  return axios({
-    url: api.databases,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getDataTables (parameter) {
-  return axios({
-    url: api.dataTables,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getSchemaColumnsData (parameter) {
-  return axios({
-    url: api.schemaColumnsData,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getTableColumns (parameter) {
-  return axios({
-    url: api.tableColumns,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getSampleData (parameter) {
-  return axios({
-    url: api.sampleData,
-    method: 'get',
-    params: parameter
-  })
-}
diff --git a/submarine-workbench/workbench-web/src/assets/background.svg b/submarine-workbench/workbench-web/src/assets/background.svg
deleted file mode 100644
index 89c2597..0000000
--- a/submarine-workbench/workbench-web/src/assets/background.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="1361px" height="609px" viewBox="0 0 1361 609" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
-    <title>Group 21</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="账户密码登录-校验" transform="translate(-79.000000, -82.000000)">
-            <g id="Group-21" transform="translate(77.000000, 73.000000)">
-                <g id="Group-18" opacity="0.8" transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)">
-                    <ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367" rx="21.7830479" ry="21.766008"></ellipse>
-                    <ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601" rx="5.2173913" ry="5.21330997"></ellipse>
-                    <path d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z" id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"></path>
-                    <path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6" stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"></path>
-                    <path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7" stroke-width="0.702678964" opacity="0.7" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
-                    <path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9" stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
-                    <g id="Group-17" transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)" fill="#CFDAE6">
-                        <ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653" ry="9.12768076"></ellipse>
-                        <path d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z" id="Oval-4" transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "></path>
-                    </g>
-                </g>
-                <g id="Group-14" transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)">
-                    <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439" rx="29.1176471" ry="29.1402439"></ellipse>
-                    <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439" rx="21.5686275" ry="21.5853659"></ellipse>
-                    <ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341" rx="23.7254902" ry="23.7439024"></ellipse>
-                    <ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439" rx="10.7843137" ry="10.7926829"></ellipse>
-                    <path d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z" id="Oval-2" fill="#BACAD9"></path>
-                    <g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)" fill="#E6A1A6">
-                        <ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824" ry="6.47560976"></ellipse>
-                        <path d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z" id="Oval-2-Copy-2" transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "></path>
-                    </g>
-                    <ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706" ry="1.61890244"></ellipse>
-                    <ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098" rx="1.61764706" ry="1.61890244"></ellipse>
-                    <ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488" rx="2.15686275" ry="2.15853659"></ellipse>
-                    <path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6" opacity="0.8"></path>
-                </g>
-                <g id="Group-10" opacity="0.799999952" transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)">
-                    <ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32" rx="11.1864407" ry="11.2941176"></ellipse>
-                    <g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9">
-                        <ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627" ry="8.55614973"></ellipse>
-                        <path d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z" id="Oval-7"></path>
-                    </g>
-                    <path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6" stroke-width="0.941176471"></path>
-                    <ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186" cy="3.29411765" rx="3.26271186" ry="3.29411765"></ellipse>
-                    <ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017" ry="2.82352941"></ellipse>
-                    <path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6" stroke-width="0.941176471"></path>
-                </g>
-                <g id="Group-19" opacity="0.33" transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)">
-                    <g id="Group-17" transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)" fill="#BACAD9">
-                        <circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"></circle>
-                        <path d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z" id="Oval-4" transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "></path>
-                    </g>
-                    <circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"></circle>
-                    <path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9" stroke-width="1.16666667"></path>
-                    <path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9" stroke-width="1.16666667"></path>
-                    <polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667" points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"></polyline>
-                    <path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7" stroke-width="1.16666667" opacity="0.6"></path>
-                    <path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9" stroke-width="1.16666667"></path>
-                    <path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6" stroke-width="1.16666667"></path>
-                    <circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"></circle>
-                    <circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"></circle>
-                    <circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25" r="8.75"></circle>
-                    <circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333" cy="30.3333333" r="5.83333333"></circle>
-                    <circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"></circle>
-                </g>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/src/assets/icons/bx-analyse.svg b/submarine-workbench/workbench-web/src/assets/icons/bx-analyse.svg
deleted file mode 100644
index b02a8d6..0000000
--- a/submarine-workbench/workbench-web/src/assets/icons/bx-analyse.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1551058675966" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7872" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M85.333333 512h85.333334a340.736 340.736 0 0 1 99.712-241.621333 337.493333 337.493333 0 0 1 108.458666-72 [...]
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/src/assets/logo-128.png b/submarine-workbench/workbench-web/src/assets/logo-128.png
deleted file mode 100644
index 47d1be9..0000000
Binary files a/submarine-workbench/workbench-web/src/assets/logo-128.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/src/assets/logo.png b/submarine-workbench/workbench-web/src/assets/logo.png
deleted file mode 100644
index e887375..0000000
Binary files a/submarine-workbench/workbench-web/src/assets/logo.png and /dev/null differ
diff --git a/submarine-workbench/workbench-web/src/assets/logo.svg b/submarine-workbench/workbench-web/src/assets/logo.svg
deleted file mode 100644
index 07ac542..0000000
--- a/submarine-workbench/workbench-web/src/assets/logo.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-  <!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
-  <title>Vue</title>
-  <desc>Created with Sketch.</desc>
-  <defs>
-    <linearGradient x1="69.644116%" y1="0%" x2="69.644116%" y2="100%" id="linearGradient-1">
-      <stop stop-color="#29CDFF" offset="0%"></stop>
-      <stop stop-color="#148EFF" offset="37.8600687%"></stop>
-      <stop stop-color="#0A60FF" offset="100%"></stop>
-    </linearGradient>
-    <linearGradient x1="-19.8191553%" y1="-36.7931464%" x2="138.57919%" y2="157.637507%" id="linearGradient-2">
-      <stop stop-color="#29CDFF" offset="0%"></stop>
-      <stop stop-color="#0F78FF" offset="100%"></stop>
-    </linearGradient>
-    <linearGradient x1="68.1279872%" y1="-35.6905737%" x2="30.4400914%" y2="114.942679%" id="linearGradient-3">
-      <stop stop-color="#FA8E7D" offset="0%"></stop>
-      <stop stop-color="#F74A5C" offset="51.2635191%"></stop>
-      <stop stop-color="#F51D2C" offset="100%"></stop>
-    </linearGradient>
-  </defs>
-  <g id="Vue" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-    <g id="Group" transform="translate(19.000000, 9.000000)">
-      <path d="M89.96,90.48 C78.58,93.48 68.33,83.36 67.62,82.48 L46.6604487,62.2292258 C45.5023849,61.1103236 44.8426845,59.5728835 44.8296987,57.9626396 L44.5035564,17.5209948 C44.4948861,16.4458744 44.0537714,15.4195095 43.2796864,14.6733517 L29.6459999,1.53153737 C28.055475,-0.00160504005 25.5232423,0.0449126588 23.9900999,1.63543756 C23.2715121,2.38092066 22.87,3.37600834 22.87,4.41143746 L22.87,64.3864751 C22.87,67.0807891 23.9572233,69.6611067 25.885409,71.5429748 L63.6004615,108. [...]
-      <path d="M68,90.1163122 C56.62,93.1163122 45.46,83.36 44.75,82.48 L23.7904487,62.2292258 C22.6323849,61.1103236 21.9726845,59.5728835 21.9596987,57.9626396 L21.6335564,17.5209948 C21.6248861,16.4458744 21.1837714,15.4195095 20.4096864,14.6733517 L6.7759999,1.53153737 C5.185475,-0.00160504005 2.65324232,0.0449126588 1.12009991,1.63543756 C0.401512125,2.38092066 3.90211878e-13,3.37600834 3.90798505e-13,4.41143746 L3.94351218e-13,64.3864751 C3.94681177e-13,67.0807891 1.08722326,69.661 [...]
-      <path d="M43.2983488,19.0991931 L27.5566079,3.88246244 C26.7624281,3.11476967 26.7409561,1.84862177 27.5086488,1.05444194 C27.8854826,0.664606611 28.4044438,0.444472651 28.9466386,0.444472651 L60.3925021,0.444472651 C61.4970716,0.444472651 62.3925021,1.33990315 62.3925021,2.44447265 C62.3925021,2.9858375 62.1730396,3.50407742 61.7842512,3.88079942 L46.0801285,19.0975301 C45.3051579,19.8484488 44.0742167,19.8491847 43.2983488,19.0991931 Z" id="Path" fill="url(#linearGradient-3)"></path>
-    </g>
-  </g>
-</svg>
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/src/assets/submarine-logo.svg b/submarine-workbench/workbench-web/src/assets/submarine-logo.svg
deleted file mode 100644
index 4bbdf7c..0000000
--- a/submarine-workbench/workbench-web/src/assets/submarine-logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 638.26 796.53"><defs><style>.cls-1{fill:none;}.cls-2{fill:#2e51bf;}.cls-3{fill:#3cddc9;}.cls-4{clip-path:url(#clip-path);}.cls-5{fill:#3090d8;}.cls-6{fill:#3fbfde;}.cls-7{fill:#1d1d1d;}.cls-8{clip-path:url(#clip-path-2);}.cls-9{fill:#313131;}.cls-10{fill:#454545;}.cls-11{fill:#686868;}.cls-12{fill:#fff;}.cls-13{clip-path:url(#clip-path-3);}.cls-14{fill:#cecece;}.cls- [...]
\ No newline at end of file
diff --git a/submarine-workbench/workbench-web/src/components/ArticleListContent/ArticleListContent.vue b/submarine-workbench/workbench-web/src/components/ArticleListContent/ArticleListContent.vue
deleted file mode 100644
index 8f39978..0000000
--- a/submarine-workbench/workbench-web/src/components/ArticleListContent/ArticleListContent.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-<template>
-  <div class="antd-pro-components-article-list-content-index-listContent">
-    <div class="description">
-      <slot>
-        {{ description }}
-      </slot>
-    </div>
-    <div class="extra">
-      <a-avatar :src="avatar" size="small" />
-      <a :href="href">{{ owner }}</a> 发布在 <a :href="href">{{ href }}</a>
-      <em>{{ updateAt | moment }}</em>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  name: 'ArticleListContent',
-  props: {
-    prefixCls: {
-      type: String,
-      default: 'antd-pro-components-article-list-content-index-listContent'
-    },
-    description: {
-      type: String,
-      default: ''
-    },
-    owner: {
-      type: String,
-      required: true
-    },
-    avatar: {
-      type: String,
-      required: true
-    },
-    href: {
-      type: String,
-      required: true
-    },
-    updateAt: {
-      type: String,
-      required: true
-    }
-  }
-}
-</script>
-
-<style lang="less" scoped>
-@import '../index.less';
-
-.antd-pro-components-article-list-content-index-listContent {
-  .description {
-    max-width: 720px;
-    line-height: 22px;
-  }
-  .extra {
-    margin-top: 16px;
-    color: @text-color-secondary;
-    line-height: 22px;
-
-    & /deep/ .ant-avatar {
-      position: relative;
-      top: 1px;
-      width: 20px;
-      height: 20px;
-      margin-right: 8px;
-      vertical-align: top;
-    }
-
-    & > em {
-      margin-left: 16px;
-      color: @disabled-color;
-      font-style: normal;
-    }
-  }
-}
-
-@media screen and (max-width: @screen-xs) {
-  .antd-pro-components-article-list-content-index-listContent {
-    .extra {
-      & > em {
-        display: block;
-        margin-top: 8px;
-        margin-left: 0;
-      }
-    }
-  }
-}
-</style>
diff --git a/submarine-workbench/workbench-web/src/components/ArticleListContent/index.js b/submarine-workbench/workbench-web/src/components/ArticleListContent/index.js
deleted file mode 100644
index 37d35c7..0000000
--- a/submarine-workbench/workbench-web/src/components/ArticleListContent/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import ArticleListContent from './ArticleListContent'
-
-export default ArticleListContent
diff --git a/submarine-workbench/workbench-web/src/components/AvatarList/Item.vue b/submarine-workbench/workbench-web/src/components/AvatarList/Item.vue
deleted file mode 100644
index 26e149e..0000000
--- a/submarine-workbench/workbench-web/src/components/AvatarList/Item.vue
+++ /dev/null
@@ -1,46 +0,0 @@
-<template>
-  <tooltip v-if="tips !== ''">
-    <template slot="title">{{ tips }}</template>
-    <avatar :size="avatarSize" :src="src" />
-  </tooltip>
-  <avatar v-else :size="avatarSize" :src="src" />
-</template>
-
-<script>
-import Avatar from 'ant-design-vue/es/avatar'
-import Tooltip from 'ant-design-vue/es/tooltip'
-
-export default {
-  name: 'AvatarItem',
-  components: {
-    Avatar,
-    Tooltip
-  },
-  props: {
-    tips: {
-      type: String,
-      default: '',
-      required: false
-    },
-    src: {
-      type: String,
-      default: ''
-    }
-  },
-  data () {
-    return {
-      size: this.$parent.size
-    }
-  },
-  computed: {
-    avatarSize () {
-      return this.size !== 'mini' && this.size || 20
-    }
-  },
-  watch: {
-    '$parent.size' (val) {
-      this.size = val
-    }
-  }
-}
-</script>
diff --git a/submarine-workbench/workbench-web/src/components/AvatarList/List.vue b/submarine-workbench/workbench-web/src/components/AvatarList/List.vue
deleted file mode 100644
index 446ceeb..0000000
--- a/submarine-workbench/workbench-web/src/components/AvatarList/List.vue
+++ /dev/null
@@ -1,99 +0,0 @@
-<!--
-<template>
-  <div :class="[prefixCls]">
-    <ul>
-      <slot></slot>
-      <template v-for="item in filterEmpty($slots.default).slice(0, 3)"></template>
-
-      <template v-if="maxLength > 0 && filterEmpty($slots.default).length > maxLength">
-        <avatar-item :size="size">
-          <avatar :size="size !== 'mini' && size || 20" :style="excessItemsStyle">{{ `+${maxLength}` }}</avatar>
-        </avatar-item>
-      </template>
-    </ul>
-  </div>
-</template>
--->
-
-<script>
-import Avatar from 'ant-design-vue/es/avatar'
-import AvatarItem from './Item'
-import { filterEmpty } from '@/components/_util/util'
-
-export default {
-  AvatarItem,
-  name: 'AvatarList',
-  components: {
-    Avatar,
-    AvatarItem
-  },
-  props: {
-    prefixCls: {
-      type: String,
-      default: 'ant-pro-avatar-list'
-    },
-    /**
-       * 头像大小 类型: large、small 、mini, default
-       * 默认值: default
-       */
-    size: {
-      type: [String, Number],
-      default: 'default'
-    },
-    /**
-       * 要显示的最大项目
-       */
-    maxLength: {
-      type: Number,
-      default: 0
-    },
-    /**
-       * 多余的项目风格
-       */
-    excessItemsStyle: {
-      type: Object,
-      default: () => {
-        return {
-          color: '#f56a00',
-          backgroundColor: '#fde3cf'
-        }
-      }
-    }
-  },
-  data () {
-    return {}
-  },
-  methods: {
-    getItems (items) {
-      const classString = {
-        [`${this.prefixCls}-item`]: true,
-        [`${this.size}`]: true
-      }
-
-      if (this.maxLength > 0) {
-        items = items.slice(0, this.maxLength)
-        items.push((<Avatar size={ this.size } style={ this.excessItemsStyle }>{`+${this.maxLength}`}</Avatar>))
-      }
-      const itemList = items.map((item) => (
-        <li class={ classString }>{ item }</li>
-      ))
-      return itemList
-    }
-  },
-  render () {
-    const { prefixCls, size } = this.$props
-    const classString = {
-      [`${prefixCls}`]: true,
-      [`${size}`]: true
-    }
-    const items = filterEmpty(this.$slots.default)
-    const itemsDom = items && items.length ? <ul class={`${prefixCls}-items`}>{ this.getItems(items) }</ul> : null
-
-    return (
-      <div class={ classString }>
-        { itemsDom }
-      </div>
-    )
-  }
-}
-</script>
diff --git a/submarine-workbench/workbench-web/src/components/AvatarList/index.js b/submarine-workbench/workbench-web/src/components/AvatarList/index.js
deleted file mode 100644
index dd6bb8b..0000000
--- a/submarine-workbench/workbench-web/src/components/AvatarList/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import AvatarList from './List'
-import './index.less'
-
-export default AvatarList
diff --git a/submarine-workbench/workbench-web/src/components/AvatarList/index.less b/submarine-workbench/workbench-web/src/components/AvatarList/index.less
deleted file mode 100644
index 9ce073f..0000000
--- a/submarine-workbench/workbench-web/src/components/AvatarList/index.less
+++ /dev/null
@@ -1,60 +0,0 @@
-@import "../index";
-
-@avatar-list-prefix-cls: ~"@{ant-pro-prefix}-avatar-list";
-@avatar-list-item-prefix-cls: ~"@{ant-pro-prefix}-avatar-list-item";
-
-.@{avatar-list-prefix-cls} {
-  display: inline-block;
-
-  ul {
-    list-style: none;
-    display: inline-block;
-    padding: 0;
-    margin: 0 0 0 8px;
-    font-size: 0;
-  }
-}
-
-.@{avatar-list-item-prefix-cls} {
-  display: inline-block;
-  font-size: @font-size-base;
-  margin-left: -8px;
-  width: @avatar-size-base;
-  height: @avatar-size-base;
-
-  :global {
-    .ant-avatar {
-      border: 1px solid #fff;
-      cursor: pointer;
-    }
-  }
-
-  &.large {
-    width: @avatar-size-lg;
-    height: @avatar-size-lg;
-  }
-
-  &.small {
-    width: @avatar-size-sm;
-    height: @avatar-size-sm;
-  }
-
-  &.mini {
-    width: 20px;
-    height: 20px;
-
-    :global {
-      .ant-avatar {
-        width: 20px;
-        height: 20px;
-        line-height: 20px;
-
-        .ant-avatar-string {
-          font-size: 12px;
-          line-height: 18px;
-        }
-      }
-    }
-  }
-}
-
diff --git a/submarine-workbench/workbench-web/src/components/AvatarList/index.md b/submarine-workbench/workbench-web/src/components/AvatarList/index.md
deleted file mode 100644
index dc9c092..0000000
--- a/submarine-workbench/workbench-web/src/components/AvatarList/index.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# AvatarList 用户头像列表
-
-
-一组用户头像,常用在项目/团队成员列表。可通过设置 `size` 属性来指定头像大小。
-
-
-
-引用方式:
-
-```javascript
-import AvatarList from '@/components/AvatarList'
-const AvatarListItem = AvatarList.AvatarItem
-
-export default {
-    components: {
-        AvatarList,
-        AvatarListItem
-    }
-}
-```
-
-
-
-## 代码演示  [demo](https://pro.loacg.com/test/home)
-
-```html
-<avatar-list size="mini">
-    <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
-    <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
-    <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
-</avatar-list>
... 39871 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@submarine.apache.org
For additional commands, e-mail: dev-help@submarine.apache.org