xiongzhu 4 лет назад
Родитель
Сommit
d5bca1fff5
100 измененных файлов с 4226 добавлено и 11217 удалено
  1. 4 1
      .gitignore
  2. 12 5
      build.sh
  3. 11 5
      pom.xml
  4. 1 1
      src/main/data-center-admin/.env.production
  5. 1 0
      src/main/data-center-admin/package.json
  6. 115 0
      src/main/data-center-admin/src/components/TFA.vue
  7. 23 3
      src/main/data-center-admin/src/plugins/http.js
  8. 16 0
      src/main/data-center-admin/src/router.js
  9. 33 15
      src/main/data-center-admin/src/views/Admin.vue
  10. 113 0
      src/main/data-center-admin/src/views/AuthorityEdit.vue
  11. 182 0
      src/main/data-center-admin/src/views/AuthorityList.vue
  12. 124 28
      src/main/data-center-admin/src/views/Login.vue
  13. 85 118
      src/main/data-center-admin/src/views/UserEdit.vue
  14. 120 0
      src/main/data-center-admin/src/views/editUserMenu.vue
  15. 77 1
      src/main/data-center-admin/yarn.lock
  16. 1 1
      src/main/data-center/.env.production
  17. 3 0
      src/main/data-center/public/index.html
  18. 78 3
      src/main/data-center/src/components/mapChart.vue
  19. 2389 0
      src/main/data-center/src/plugins/common.js
  20. 24 3
      src/main/data-center/src/plugins/http.js
  21. 87 63
      src/main/java/cn/licoy/encryptbody/advice/DecryptRequestBodyAdvice.java
  22. 3 1
      src/main/java/cn/licoy/encryptbody/advice/EncryptResponseBodyAdvice.java
  23. 28 28
      src/main/java/cn/licoy/encryptbody/util/AESEncryptUtil.java
  24. 4 0
      src/main/java/com/izouma/jmrh/Application.java
  25. 84 0
      src/main/java/com/izouma/jmrh/config/DecryptFilter.java
  26. 0 44
      src/main/java/com/izouma/jmrh/config/RedisConfig.java
  27. 23 0
      src/main/java/com/izouma/jmrh/config/ThreadPoolTaskExecutorConfig.java
  28. 13 7
      src/main/java/com/izouma/jmrh/config/WebMvcConfig.java
  29. 46 0
      src/main/java/com/izouma/jmrh/converter/EncryptConverter.java
  30. 11 4
      src/main/java/com/izouma/jmrh/domain/OrgInfo.java
  31. 11 0
      src/main/java/com/izouma/jmrh/domain/User.java
  32. 11 0
      src/main/java/com/izouma/jmrh/dto/Captcha.java
  33. 1 1
      src/main/java/com/izouma/jmrh/dto/SndExcelDTO.java
  34. 14 1
      src/main/java/com/izouma/jmrh/exception/GlobalExceptionHandler.java
  35. 1 0
      src/main/java/com/izouma/jmrh/security/WebSecurityConfig.java
  36. 47 0
      src/main/java/com/izouma/jmrh/service/CaptchaService.java
  37. 34 0
      src/main/java/com/izouma/jmrh/service/UserService.java
  38. 3 1
      src/main/java/com/izouma/jmrh/service/storage/LocalStorageService.java
  39. 30 12
      src/main/java/com/izouma/jmrh/web/AuthenticationController.java
  40. 3 0
      src/main/java/com/izouma/jmrh/web/BaseController.java
  41. 30 0
      src/main/java/com/izouma/jmrh/web/CaptchaController.java
  42. 1 1
      src/main/java/com/izouma/jmrh/web/FileUploadController.java
  43. 6 0
      src/main/java/com/izouma/jmrh/web/OrgInfoController.java
  44. 1 3
      src/main/java/com/izouma/jmrh/web/ResourceSupplyAndDemandController.java
  45. 39 4
      src/main/java/com/izouma/jmrh/web/UserController.java
  46. 1 1
      src/main/jmrh/.env.production
  47. 1 0
      src/main/jmrh/package.json
  48. 0 164
      src/main/jmrh/public/未命名文件夹/未命名文件夹/icons/default/icons.js
  49. 0 0
      src/main/jmrh/public/未命名文件夹/未命名文件夹/icons/default/icons.min.js
  50. 0 7
      src/main/jmrh/public/未命名文件夹/未命名文件夹/icons/default/index.js
  51. 0 59
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/dark/content.css
  52. 0 7
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/dark/content.min.css
  53. 0 49
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/default/content.css
  54. 0 7
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/default/content.min.css
  55. 0 54
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/document/content.css
  56. 0 7
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/document/content.min.css
  57. 0 50
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/writer/content.css
  58. 0 7
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/writer/content.min.css
  59. 0 677
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.css
  60. 0 689
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.inline.css
  61. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.inline.min.css
  62. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.min.css
  63. 0 29
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.mobile.css
  64. 0 7
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.mobile.min.css
  65. BIN
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
  66. 0 2897
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.css
  67. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.min.css
  68. 0 673
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.mobile.css
  69. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.mobile.min.css
  70. 0 695
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.css
  71. 0 689
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.inline.css
  72. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.inline.min.css
  73. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.min.css
  74. 0 29
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.mobile.css
  75. 0 7
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.mobile.min.css
  76. BIN
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/fonts/tinymce-mobile.woff
  77. 0 2897
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.css
  78. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.min.css
  79. 0 673
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.mobile.css
  80. 0 6
      src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.mobile.min.css
  81. 24 3
      src/main/jmrh/src/plugins/http.js
  82. 8 0
      src/main/jmrh/src/router/index.js
  83. 1 1
      src/main/jmrh/src/styles/common.css
  84. 7 16
      src/main/jmrh/src/views/Index.vue
  85. 39 0
      src/main/jmrh/src/views/app.vue
  86. 7 3
      src/main/jmrh/src/views/login/register.vue
  87. 77 1
      src/main/jmrh/yarn.lock
  88. 48 12
      src/main/resources/application.yaml
  89. 69 0
      src/main/resources/logback-spring.xml
  90. 1 1
      src/main/vue/.env.production
  91. 0 164
      src/main/vue/public/未命名文件夹/icons/default/icons.js
  92. 0 0
      src/main/vue/public/未命名文件夹/icons/default/icons.min.js
  93. 0 7
      src/main/vue/public/未命名文件夹/icons/default/index.js
  94. 0 59
      src/main/vue/public/未命名文件夹/skins/content/dark/content.css
  95. 0 7
      src/main/vue/public/未命名文件夹/skins/content/dark/content.min.css
  96. 0 49
      src/main/vue/public/未命名文件夹/skins/content/default/content.css
  97. 0 7
      src/main/vue/public/未命名文件夹/skins/content/default/content.min.css
  98. 0 54
      src/main/vue/public/未命名文件夹/skins/content/document/content.css
  99. 0 7
      src/main/vue/public/未命名文件夹/skins/content/document/content.min.css
  100. 0 50
      src/main/vue/public/未命名文件夹/skins/content/writer/content.css

+ 4 - 1
.gitignore

@@ -32,4 +32,7 @@ build/
 
 .DS_Store
 
-dump.sql
+dump.sql
+build.tar.gz
+
+/upload

+ 12 - 5
build.sh

@@ -1,7 +1,14 @@
-git checkout
+mkdir -p build
+rm -rf build/*
 git pull
-#(cd src/main/vue && npm run build)
 mvn clean package
-systemctl stop zmj
-cp target/zhumj-0.0.1-SNAPSHOT.jar /var/www/zmj/zhumj-0.0.1-SNAPSHOT.jar
-systemctl start zmj
+(cd src/main/vue && yarn && yarn build)
+(cd src/main/jmrh && yarn && yarn build)
+(cd src/main/data-center && yarn && yarn build)
+(cd src/main/data-center-admin && yarn && yarn build)
+cp -r target/jmrh-0.0.1-SNAPSHOT.jar build/
+cp -r src/main/vue/dist build/admin
+cp -r src/main/jmrh/dist build/pc
+cp -r src/main/data-center/dist build/data_center
+cp -r src/main/data-center-admin/dist build/data_center_admin
+tar zcvf build.tar.gz build

+ 11 - 5
pom.xml

@@ -99,11 +99,6 @@
             <optional>true</optional>
         </dependency>
 
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-redis</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-pool2</artifactId>
@@ -268,6 +263,17 @@
             <version>6.5.4</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.whvcse</groupId>
+            <artifactId>easy-captcha</artifactId>
+            <version>1.6.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.warrenstrange</groupId>
+            <artifactId>googleauth</artifactId>
+            <version>1.5.0</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 1 - 1
src/main/data-center-admin/.env.production

@@ -1 +1 @@
-VUE_APP_BASE_URL=http://jmrh.izouma.com/
+VUE_APP_BASE_URL=/

+ 1 - 0
src/main/data-center-admin/package.json

@@ -9,6 +9,7 @@
     "build-theme": "npx et -o src/styles/element_theme"
   },
   "dependencies": {
+    "@chenfengyuan/vue-qrcode": "^1.0.2",
     "@download/blockies": "https://github.com/download13/blockies.git",
     "@fortawesome/fontawesome": "^1.1.8",
     "@fortawesome/fontawesome-free-solid": "^5.0.13",

+ 115 - 0
src/main/data-center-admin/src/components/TFA.vue

@@ -0,0 +1,115 @@
+<template>
+    <div>
+        <el-dialog :visible.sync="showDialog" width="600px" title="绑定两步验证">
+            <el-steps :space="300" :active="step" align-center style="margin-bottom: 60px">
+                <el-step></el-step>
+                <el-step></el-step>
+                <el-step></el-step>
+            </el-steps>
+            <div v-if="step === 1" class="step1">
+                <qrcode :value="qrcodeContent" :options="{ width: 250 }"></qrcode>
+                <el-alert type="success" :closable="false" center>
+                    <span slot="title">请用手机下载安装Google Authenticator,然后扫描上方二维码</span>
+                </el-alert>
+            </div>
+            <div v-if="step === 2" class="step2">
+                <el-form :model="tfaForm" ref="tfaForm" :rules="tfaRules" label-position="right" label-width="100px">
+                    <el-form-item prop="password" label="密码">
+                        <el-input type="password" v-model="tfaForm.password"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="code" label="谷歌验证码">
+                        <el-input type="number" v-model="tfaForm.code"></el-input>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <div v-if="step === 3" class="step3" v-loading="loading" element-loading-text="绑定中">
+                <i class="el-icon el-icon-success" v-if="!loading"></i>
+            </div>
+            <div slot="footer">
+                <el-button type="primary" size="mini" v-if="step === 2" @click="step = 1">上一步</el-button>
+                <el-button type="primary" size="mini" v-if="step === 1" @click="step = 2">下一步</el-button>
+                <el-button type="primary" size="mini" v-if="step === 2" @click="bind">下一步</el-button>
+                <el-button type="primary" size="mini" v-if="step === 3 && !loading" @click="showDialog = false">
+                    完成
+                </el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import qrcode from '@chenfengyuan/vue-qrcode';
+export default {
+    components: { qrcode },
+    data() {
+        return {
+            showDialog: false,
+            step: 1,
+            tfaForm: {
+                key: '',
+                password: '',
+                code: ''
+            },
+            tfaRules: {
+                password: [{ required: true, message: '请输入密码' }],
+                code: [{ required: true, message: '请输入谷歌验证码' }]
+            },
+            loading: false
+        };
+    },
+    created() {
+        this.getKey();
+        this.$http.get('/user/tfaStatus').then(res => {
+            if (res.status === false) {
+                this.showDialog = true;
+            }
+        });
+    },
+    computed: {
+        qrcodeContent() {
+            return `otpauth://totp/${this.$store.state.userInfo.id}?secret=${this.tfaForm.key}&issuer=JMRH`;
+        }
+    },
+    methods: {
+        getKey() {
+            this.$http.post('/user/getTFAKey').then(res => {
+                this.$set(this.tfaForm, 'key', res);
+            });
+        },
+        bind() {
+            this.$refs.tfaForm
+                .validate()
+                .then(res => {
+                    this.step = 3;
+                    this.loading = true;
+                    this.$http
+                        .post('/user/bindTFA', { ...this.tfaForm })
+                        .then(res => {
+                            this.loading = false;
+                        })
+                        .catch(e => {
+                            this.step = 2;
+                            this.loading = false;
+                            this.$message.error(e.error);
+                        });
+                })
+                .catch(() => {});
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.step1 {
+    text-align: center;
+}
+.step2 {
+    width: 400px;
+    margin: auto;
+}
+.step3 {
+    text-align: center;
+    .el-icon {
+        font-size: 100px;
+        color: #67c23a;
+    }
+}
+</style>

+ 23 - 3
src/main/data-center-admin/src/plugins/http.js

@@ -25,6 +25,15 @@ function decrypt(content) {
     return decrypted.toString(CryptoJS.enc.Utf8);
 }
 
+function encrypt(content) {
+    const key = CryptoJS.enc.Hex.parse('2181E9E80460B852859EE455AC5203D9');
+    var encrypted = CryptoJS.AES.encrypt(content, key, {
+        mode: CryptoJS.mode.ECB,
+        padding: CryptoJS.pad.Pkcs7
+    });
+    return encrypted.ciphertext.toString(CryptoJS.enc.Hex);
+}
+
 axiosInstance.interceptors.request.use(
     function(config) {
         config.headers = config.headers || {};
@@ -107,15 +116,26 @@ export default {
             },
             post(url, body, options) {
                 options = options || {};
+                options.headers = options.headers || {};
                 body = body || {};
-                if (!(body instanceof FormData)) {
-                    if (options.body !== 'json') {
+                if (body instanceof FormData) {
+                } else {
+                    options.headers['Content-Encrypted'] = 'true';
+                    if (options.body === 'json') {
+                        body = encrypt(JSON.stringify(body));
+                        options.headers['content-type'] = 'application/json';
+                    } else {
+                        for (let key of Object.keys(body)) {
+                            if (body[key] != undefined && body[key] !== '') {
+                                body[key] = encrypt(body[key] + '');
+                            }
+                        }
                         body = qs.stringify(body);
                     }
                 }
                 return new Promise((resolve, reject) => {
                     axiosInstance
-                        .post(url, body, { withCredentials: true })
+                        .post(url, body, { withCredentials: true, headers: options.headers })
                         .then(res => {
                             resolve(res.data);
                         })

+ 16 - 0
src/main/data-center-admin/src/router.js

@@ -236,6 +236,22 @@ const router = new Router({
                     meta: {
                         title: '预警阀值'
                     }
+                },
+                {
+                    path: '/authorityEdit',
+                    name: 'AuthorityEdit',
+                    component: () => import(/* webpackChunkName: "authorityEdit" */ './views/AuthorityEdit.vue'),
+                    meta: {
+                        title: '角色编辑'
+                    }
+                },
+                {
+                    path: '/authorityList',
+                    name: 'AuthorityList',
+                    component: () => import(/* webpackChunkName: "authorityList" */ './views/AuthorityList.vue'),
+                    meta: {
+                        title: '角色管理'
+                    }
                 }
                 /**INSERT_LOCATION**/
             ]

+ 33 - 15
src/main/data-center-admin/src/views/Admin.vue

@@ -1,9 +1,7 @@
 <template>
     <el-container id="app">
         <el-aside :width="collapse ? '65px' : '200px'" class="aside">
-            <div v-if="collapse" class="logo-wrapper collapse" @click="$router.push('/chart1')">
-                监控中心
-            </div>
+            <div v-if="collapse" class="logo-wrapper collapse" @click="$router.push('/chart1')">监控中心</div>
             <div v-else class="logo-wrapper" @click="$router.push('/chart1')">监控中心</div>
             <el-menu
                 :collapse="collapse"
@@ -13,7 +11,7 @@
                 :unique-opened="true"
                 :router="true"
                 :default-active="activeMenu"
-                style="border-right: 1px solid #545c64;"
+                style="border-right: 1px solid #545c64"
                 class="el-menu-vertical-demo"
             >
                 <sys-menu v-for="item in menus" :menu="item" :key="item.id"> </sys-menu>
@@ -23,10 +21,10 @@
             <el-header class="app-header">
                 <div class="header-btn" @click="collapse = !collapse">
                     <div :style="{ transform: collapse ? 'rotate(90deg)' : '' }">
-                        <i class="fas fa-bars" style="font-size: 18px;"></i>
+                        <i class="fas fa-bars" style="font-size: 18px"></i>
                     </div>
                 </div>
-                <div style="flex-grow: 1; margin-left: 20px;"></div>
+                <div style="flex-grow: 1; margin-left: 20px"></div>
 
                 <el-tooltip
                     effect="dark"
@@ -35,14 +33,14 @@
                     :open-delay="1000"
                 >
                     <div class="header-btn" @click="toggleFullScreen" ref="fullscreen">
-                        <i class="fas fa-expand" style="font-size: 18px;"></i>
+                        <i class="fas fa-expand" style="font-size: 18px"></i>
                     </div>
                 </el-tooltip>
 
-                <el-dropdown @command="onCommand" style="margin-left: 20px;" trigger="click">
+                <el-dropdown @command="onCommand" style="margin-left: 20px" trigger="click">
                     <img :src="userInfo ? userInfo.avatar || '' : ''" class="avatar" />
                     <el-dropdown-menu slot="dropdown">
-                        <el-dropdown-item command="pwd" style="word-break:keep-all">修改密码 </el-dropdown-item>
+                        <el-dropdown-item command="pwd" style="word-break: keep-all">修改密码 </el-dropdown-item>
                         <el-dropdown-item command="logout">退出登录 </el-dropdown-item>
                     </el-dropdown-menu>
                 </el-dropdown>
@@ -67,7 +65,7 @@
                     <el-input v-model="pwdForm.repeat" type="password" placeholder="确认新密码"></el-input>
                 </el-form-item>
                 <el-form-item label="验证码" prop="code">
-                    <el-input v-model="pwdForm.code" placeholder="请输入验证码" style="width:150px"></el-input>
+                    <el-input v-model="pwdForm.code" placeholder="请输入验证码" style="width: 150px"></el-input>
                     <img :src="captcha" class="captcha-image" @click="refreshCaptcha" />
                 </el-form-item>
             </el-form>
@@ -76,12 +74,15 @@
                 <el-button type="primary" @click="savePwd" :loading="pwdLoading">确认修改</el-button>
             </span>
         </el-dialog>
+        <TFA></TFA>
     </el-container>
 </template>
 
 <script>
 import SysMenu from '../components/SysMenu';
 import { mapState } from 'vuex';
+import { isBefore, parse, format, addDays } from 'date-fns';
+import TFA from '../components/TFA';
 export default {
     name: 'admin',
     created() {
@@ -124,6 +125,13 @@ export default {
             .catch(e => {
                 console.log(e);
             });
+        console.log(this.userInfo.pwdUpdateAt);
+        let pwdUpdateAt = this.userInfo.pwdUpdateAt;
+        if (!pwdUpdateAt || isBefore(parse(pwdUpdateAt, 'yyyy-MM-dd HH:mm:ss', new Date()), addDays(new Date(), -30))) {
+            this.$alert('您已30天未修改密码,请尽快修改密码', '提示').then(() => {
+                this.onShowPwdDialog();
+            });
+        }
     },
     data() {
         return {
@@ -142,7 +150,14 @@ export default {
             },
             captcha: '',
             pwdRules: {
-                password: [{ required: true, message: '请输入新密码', trigger: 'blur' }],
+                password: [
+                    { required: true, message: '请输入新密码', trigger: 'blur' },
+                    {
+                        pattern: /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,30}/,
+                        message: '密码必须包含大小写字母和数字,且长度为8-30',
+                        trigger: 'blur'
+                    }
+                ],
                 repeat: [
                     { required: true, message: '请确认新密码', trigger: 'blur' },
                     {
@@ -222,7 +237,9 @@ export default {
                     children: [
                         { active: false, name: '日志管理', path: '/operationLogList', icon: 'fas fa-bars' },
                         { active: false, name: '配置管理', path: '/sysConfigList', icon: 'fas fa-bars' },
-                        { active: false, name: '存储管理', path: '/genCodeList', icon: 'fas fa-bars' }
+                        { active: false, name: '存储管理', path: '/genCodeList', icon: 'fas fa-bars' },
+                        { active: false, name: '用户管理', path: '/userList', icon: 'fas fa-bars' },
+                        { active: false, name: '角色管理', path: '/authorityList', icon: 'fas fa-bars' }
                     ]
                 },
                 {
@@ -302,8 +319,8 @@ export default {
             this.$refs.pwdForm.validate(valid => {
                 if (valid) {
                     this.$http
-                        .post('/user/setPassword', {
-                            password: this.pwdForm.password
+                        .post('/user/changePassword', {
+                            ...this.pwdForm
                         })
                         .then(res => {
                             console.log(res);
@@ -387,7 +404,8 @@ export default {
         }
     },
     components: {
-        SysMenu
+        SysMenu,
+        TFA
     }
 };
 </script>

+ 113 - 0
src/main/data-center-admin/src/views/AuthorityEdit.vue

@@ -0,0 +1,113 @@
+<template>
+    <div class="edit-view">
+        <el-form
+            :model="formData"
+            :rules="rules"
+            ref="form"
+            label-width="80px"
+            label-position="right"
+            size="small"
+            style="max-width: 500px;"
+        >
+            <el-form-item prop="name" label="Code">
+                <el-input v-model="formData.name"></el-input>
+            </el-form-item>
+            <el-form-item prop="nameDesc" label="角色名称">
+                <el-input v-model="formData.nameDesc"></el-input>
+            </el-form-item>
+            <el-form-item prop="description" label="角色描述">
+                <el-input v-model="formData.description"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
+                <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+export default {
+    name: 'AuthorityEdit',
+    created() {
+        if (this.$route.query.id) {
+            this.$http
+                .get('authority/get/' + this.$route.query.id)
+                .then(res => {
+                    this.formData = res;
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        }
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {},
+            rules: {
+                name: [
+                    {
+                        required: true,
+                        message: '请输入Code',
+                        trigger: 'blur'
+                    }
+                ],
+                nameDesc: [
+                    {
+                        required: true,
+                        message: '请输入角色名称',
+                        trigger: 'blur'
+                    }
+                ]
+            }
+        };
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            let data = { ...this.formData };
+
+            this.saving = true;
+            this.$http
+                .post('/authority/save', data, { body: 'json' })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/authority/del/${this.formData.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        console.log(e);
+                        this.$message.error(e.error);
+                    }
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 182 - 0
src/main/data-center-admin/src/views/AuthorityList.vue

@@ -0,0 +1,182 @@
+<template>
+    <div class="list-view">
+        <div class="filters-container">
+            <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
+            <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button>
+            <el-button @click="addRow" type="primary" icon="el-icon-plus" class="filter-item">添加 </el-button>
+            <el-button
+                @click="download"
+                type="primary"
+                icon="el-icon-download"
+                :loading="downloading"
+                class="filter-item"
+                >导出EXCEL
+            </el-button>
+        </div>
+        <el-table
+            :data="tableData"
+            row-key="id"
+            ref="table"
+            header-row-class-name="table-header-row"
+            header-cell-class-name="table-header-cell"
+            row-class-name="table-row"
+            cell-class-name="table-cell"
+            :height="tableHeight"
+        >
+            <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
+            <el-table-column prop="name" label="Code"> </el-table-column>
+            <el-table-column prop="nameDesc" label="角色名称"> </el-table-column>
+            <el-table-column prop="description" label="角色描述"> </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right" min-width="150">
+                <template slot-scope="{ row }">
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
+                    <el-button @click="addMenu(row)" type="primary" size="mini" plain>分配权限</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <!-- <div class="multiple-mode-wrapper">
+                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button @click="operation1">批量操作1</el-button>
+                    <el-button @click="operation2">批量操作2</el-button>
+                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div> -->
+            <el-pagination
+                background
+                @size-change="onSizeChange"
+                @current-change="onCurrentChange"
+                :current-page="page"
+                :page-sizes="[10, 20, 30, 40, 50]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="totalElements"
+            >
+            </el-pagination>
+        </div>
+        <user-menu :editMenu="editMenu" @closeEditMenu="closeEditMenu"></user-menu>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+import userMenu from './editUserMenu';
+export default {
+    name: 'AuthorityList',
+    mixins: [pageableTable],
+    components: {
+        userMenu
+    },
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/authority/all',
+            downloading: false,
+            editMenu: {
+                title: '',
+                editDialogVisible: false,
+                roleId: ''
+            },
+            sortStr: ''
+        };
+    },
+    computed: {
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+        addMenu(row) {
+            this.editMenu.title = '分配权限';
+            this.editMenu.roleId = row.name;
+            this.editMenu.editDialogVisible = true;
+        },
+        closeEditMenu(show) {
+            this.editMenu.editDialogVisible = show;
+            this.getData();
+        },
+        beforeGetData() {
+            if (this.search) {
+                return { search: this.search };
+            }
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/authorityEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row) {
+            this.$router.push({
+                path: '/authorityEdit',
+                query: {
+                    id: row.name
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/authority/excel', {
+                    responseType: 'blob',
+                    params: { size: 10000 }
+                })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute(
+                        'download',
+                        decodeURIComponent(res.headers['content-disposition'].split('filename=')[1])
+                    );
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        operation1() {
+            this.$notify({
+                title: '提示',
+                message: this.selection
+            });
+        },
+        operation2() {
+            this.$message('操作2');
+        },
+        deleteRow(row) {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/authority/del/${row.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        this.$message.error(e.error);
+                    }
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 124 - 28
src/main/data-center-admin/src/views/Login.vue

@@ -2,21 +2,24 @@
     <div class="container" :style="{ backgroundImage: 'url(' + require('../assets/bg_login.jpg') + ')' }">
         <transition :name="`slide-${register ? 'in' : 'out'}`">
             <div class="login-wrapper" @keyup.enter="doRegister" v-if="register" key="register">
-                <el-page-header @back="register = false" title="登录" style="width: 350px; line-height: 60px;">
+                <el-page-header @back="register = false" title="登录" style="width: 350px; line-height: 60px">
                     <div class="register-title" slot="content">注册账号</div>
                 </el-page-header>
 
-                <el-form :model="registerInfo" style="width: 350px;" ref="registerForm">
-                    <el-form-item prop="username" :rules="{ required: true, message: '请输入用户名', trigger: 'blur' }">
+                <el-form :model="registerInfo" style="width: 350px" ref="registerForm" :rules="registerRules">
+                    <el-form-item prop="username">
                         <el-input v-model="registerInfo.username" placeholder="用户名"> </el-input>
                     </el-form-item>
-                    <el-form-item prop="password" :rules="{ required: true, message: '请输入密码', trigger: 'blur' }">
+                    <el-form-item prop="password">
                         <el-input v-model="registerInfo.password" placeholder="密码" type="password"></el-input>
                     </el-form-item>
+                    <el-form-item prop="password1">
+                        <el-input v-model="registerInfo.password1" placeholder="重复密码" type="password"></el-input>
+                    </el-form-item>
                     <el-form-item>
-                        <el-button :loading="loading" @click="doRegister" type="primary" style="width: 100%;"
-                            >注册</el-button
-                        >
+                        <el-button :loading="loading" @click="doRegister" type="primary" style="width: 100%">
+                            注册
+                        </el-button>
                     </el-form-item>
                 </el-form>
             </div>
@@ -24,21 +27,15 @@
                 <div class="title">欢迎登录</div>
                 <el-tabs v-model="activeName" stretch class="tab-list">
                     <el-tab-pane label="用户名登陆" name="first">
-                        <el-form :model="userInfo" style="width: 350px;" ref="form">
-                            <el-form-item
-                                prop="username"
-                                :rules="{ required: true, message: '请输入用户名', trigger: 'blur' }"
-                            >
+                        <el-form :model="userInfo" style="width: 350px" ref="form" :rules="loginRules">
+                            <el-form-item prop="username">
                                 <el-input v-model="userInfo.username" placeholder="用户名"> </el-input>
                             </el-form-item>
-                            <el-form-item
-                                prop="password"
-                                :rules="{ required: true, message: '请输入密码', trigger: 'blur' }"
-                            >
+                            <el-form-item prop="password">
                                 <el-input v-model="userInfo.password" placeholder="密码" type="password"></el-input>
                             </el-form-item>
                             <el-form-item>
-                                <el-button :loading="loading" @click="login" type="primary" style="width: 100%;"
+                                <el-button :loading="loading" @click="login" type="primary" style="width: 100%"
                                     >登录
                                 </el-button>
                             </el-form-item>
@@ -48,15 +45,15 @@
                                     style="width: 100%;">手机登录</el-button>
                             </el-form-item> -->
                             <el-form-item label="">
-                                <el-checkbox v-model="rememberMe">7天内免登录 </el-checkbox>
-                                <el-button type="text" style="float: right;" @click="register = true"
+                                <!-- <el-checkbox v-model="rememberMe">7天内免登录 </el-checkbox> -->
+                                <el-button type="text" style="float: right" @click="register = true"
                                     >注册账号
                                 </el-button>
                             </el-form-item>
                         </el-form>
                     </el-tab-pane>
-                    <el-tab-pane label="验证码登陆" name="second">
-                        <el-form :model="userInfo" style="width: 350px;" ref="form2">
+                    <el-tab-pane label="验证码登陆" name="second" disabled>
+                        <el-form :model="userInfo" style="width: 350px" ref="form2">
                             <el-form-item
                                 prop="phone"
                                 :rules="{ required: true, message: '请输入手机号', trigger: 'blur' }"
@@ -83,13 +80,13 @@
                                 </el-button>
                             </el-form-item> -->
                             <el-form-item>
-                                <el-button :loading="loading" @click="phonelogin" type="primary" style="width: 100%;"
+                                <el-button :loading="loading" @click="phonelogin" type="primary" style="width: 100%"
                                     >手机登录</el-button
                                 >
                             </el-form-item>
                             <el-form-item label="">
                                 <el-checkbox v-model="rememberMe">7天内免登录 </el-checkbox>
-                                <el-button type="text" style="float: right;" @click="register = true"
+                                <el-button type="text" style="float: right" @click="register = true"
                                     >注册账号
                                 </el-button>
                             </el-form-item>
@@ -101,6 +98,7 @@
     </div>
 </template>
 <script>
+import { parse, format, isBefore, addMinutes } from 'date-fns';
 export default {
     data() {
         return {
@@ -119,12 +117,66 @@ export default {
             },
             activeName: 'first',
             time: 0,
-            sending: false
+            sending: false,
+            registerRules: {
+                username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
+                password: [
+                    { required: true, message: '请输入密码', trigger: 'blur' },
+                    {
+                        pattern: /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,30}/,
+                        message: '密码必须包含大小写字母和数字,且长度为8-30',
+                        trigger: 'blur'
+                    }
+                ],
+                password1: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (value !== this.registerInfo.password) {
+                                callback(new Error('两次输入密码不一致!'));
+                            } else {
+                                callback();
+                            }
+                        }
+                    }
+                ]
+            },
+            loginRules: {
+                username: [
+                    { required: true, message: '请输入用户名', trigger: 'blur' },
+                    {
+                        validator: (rule, value, callback) => {
+                            if (
+                                value !== '' &&
+                                /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%&*()\-+={}|《》?:“”【】、;‘’,。、]/im.test(
+                                    value
+                                )
+                            ) {
+                                callback(new Error('用户名输入不正确'));
+                            } else {
+                                callback();
+                            }
+                        }
+                    }
+                ],
+                password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
+            }
         };
     },
     methods: {
         login() {
             this.$refs.form.validate(valid => {
+                let tryNum = parseInt(localStorage.getItem('loginTry::' + this.userInfo.username) || 0);
+
+                let lastLogin = localStorage.getItem('lastLogin');
+                lastLogin = parse(lastLogin, 'yyyy-MM-dd HH:mm:ss', new Date());
+                if (isBefore(lastLogin, addMinutes(new Date(), -30))) {
+                    tryNum = 0;
+                } else if (tryNum >= 5) {
+                    this.$message.error('密码错误超过5次,账号已锁定');
+                    return;
+                }
+                localStorage.setItem('loginTry::' + this.userInfo.username, ++tryNum);
+                localStorage.setItem('lastLogin', format(new Date(), 'yyyy-MM-dd HH:mm:ss'));
                 if (valid) {
                     this.loading = true;
                     this.$http
@@ -138,20 +190,64 @@ export default {
                             return this.$http.get('/user/my');
                         })
                         .then(res => {
-                            this.loading = false;
+                            localStorage.removeItem('loginTry::' + this.userInfo.username);
                             this.$store.commit('updateUserInfo', res);
-                            this.$router.replace({
-                                name: this.$route.params.name || 'chart1'
+                            this.$http.get('/user/tfaStatus').then(res => {
+                                console.log(res);
+                                if (res.status === true) {
+                                    this.tfa();
+                                } else {
+                                    this.loading = false;
+                                    this.$router.replace({
+                                        name: this.$route.params.name || 'chart1'
+                                    });
+                                }
                             });
                         })
                         .catch(e => {
                             console.log(e);
                             this.loading = false;
-                            this.$message.error(e.error);
+                            if (tryNum >= 5) {
+                                this.$message.error('密码错误超过5次,账号已锁定');
+                            } else {
+                                this.$message.error(e.error + ',剩余尝试次数' + (5 - tryNum));
+                            }
                         });
                 }
             });
         },
+        tfa() {
+            this.$prompt('请输入谷歌验证码', '两步验证', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                inputPattern: /^\d{6}$/,
+                inputErrorMessage: '验证码格式不正确',
+                beforeClose: (action, instance, done) => {
+                    console.log(action, instance, done);
+                    if (action === 'confirm') {
+                        instance.confirmButtonLoading = true;
+                        this.$http
+                            .post('/user/verifyTFA', { code: instance.inputValue })
+                            .then(res => {
+                                instance.confirmButtonLoading = false;
+                                done();
+                                this.loading = false;
+                                this.$router.replace({
+                                    name: this.$route.params.name || 'chart1'
+                                });
+                            })
+                            .catch(() => {
+                                instance.confirmButtonLoading = false;
+                                this.$message.error('验证码错误');
+                            });
+                    } else {
+                        done();
+                    }
+                }
+            })
+                .then(() => {})
+                .catch(() => {});
+        },
         phonelogin() {
             this.$refs.form2.validate(valid => {
                 if (valid) {

+ 85 - 118
src/main/data-center-admin/src/views/UserEdit.vue

@@ -1,80 +1,51 @@
 <template>
     <div class="edit-view">
-        <page-title>
-            <el-button @click="$router.go(-1)">取消</el-button>
-            <el-button
-                @click="del"
-                :loading="$store.state.fetchingData"
-                type="danger"
-                v-if="formData.id && formData.id !== 1"
-                >删除
-            </el-button>
-            <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
-        </page-title>
-        <div class="edit-view__content-wrapper">
-            <div class="edit-view__content-section">
-                <el-form
-                    :model="formData"
-                    :rules="rules"
-                    ref="form"
-                    label-width="80px"
-                    label-position="right"
-                    style="max-width: 500px;"
-                >
-                    <el-form-item prop="avatar" label="头像">
-                        <crop-upload v-model="formData.avatar"></crop-upload>
-                    </el-form-item>
-                    <el-form-item prop="username" label="用户名">
-                        <el-input v-model="formData.username"></el-input>
-                        <div class="gen" @dblclick="gen"></div>
-                    </el-form-item>
-                    <el-form-item prop="nickname" label="昵称">
-                        <el-input v-model="formData.nickname"></el-input>
-                    </el-form-item>
-                    <el-form-item v-if="formData.id" label="密码">
-                        <el-button type="primary" plain @click="resetPassword" size="mini">重置 </el-button>
-                    </el-form-item>
-                    <el-form-item v-else prop="password" label="密码">
-                        <el-input v-model="formData.password"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="phone" label="手机">
-                        <el-input v-model="formData.phone"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="authorities" label="角色">
-                        <el-select
-                            v-model="formData.authorities"
-                            multiple
-                            placeholder="请选择"
-                            value-key="name"
-                            style="width:100%"
-                        >
-                            <el-option
-                                v-for="item in authorities"
-                                :key="item.name"
-                                :label="item.description"
-                                :value="item"
-                            >
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item>
-                        <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
-                        <el-button @click="del" :disabled="saving" type="danger" v-if="formData.id && formData.id !== 1"
-                            >删除
-                        </el-button>
-                        <el-button @click="$router.go(-1)" :disabled="saving">取消</el-button>
-                    </el-form-item>
-                </el-form>
-            </div>
-        </div>
+        <el-form
+            :model="formData"
+            :rules="rules"
+            ref="form"
+            label-width="80px"
+            label-position="right"
+            style="max-width: 500px"
+        >
+            <el-form-item prop="avatar" label="头像">
+                <crop-upload v-model="formData.avatar"></crop-upload>
+            </el-form-item>
+            <el-form-item prop="username" label="用户名">
+                <el-input v-model="formData.username"></el-input>
+            </el-form-item>
+            <el-form-item prop="nickname" label="昵称">
+                <el-input v-model="formData.nickname"></el-input>
+            </el-form-item>
+            <el-form-item v-if="formData.id" label="密码">
+                <el-button type="primary" plain @click="resetPassword">重置 </el-button>
+            </el-form-item>
+            <el-form-item v-else prop="password" label="密码">
+                <el-input v-model="formData.password"></el-input>
+            </el-form-item>
+            <el-form-item prop="phone" label="手机">
+                <el-input v-model="formData.phone"></el-input>
+            </el-form-item>
+            <el-form-item prop="email" label="邮箱">
+                <el-input v-model="formData.email"></el-input>
+            </el-form-item>
+            <el-form-item prop="authorities" label="角色">
+                <el-select v-model="formData.authorities" multiple placeholder="请选择" value-key="name">
+                    <el-option v-for="item in authorities" :key="item.name" :label="item.nameDesc" :value="item">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
+                <el-button @click="del" :loading="$store.state.fetchingData" type="danger" v-if="formData.id"
+                    >删除
+                </el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
     </div>
 </template>
 <script>
-import { toSvg } from 'jdenticon';
-import { createIcon } from '@download/blockies';
-import faker from 'faker';
-faker.locale = 'zh_CN';
-console.log(faker);
 export default {
     created() {
         if (this.$route.query.id) {
@@ -91,7 +62,7 @@ export default {
         this.$http
             .get('/authority/all')
             .then(res => {
-                this.authorities = res;
+                this.authorities = res.content;
             })
             .catch(e => {
                 console.log(e);
@@ -114,16 +85,26 @@ export default {
                 ],
                 username: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
                 nickname: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
-                password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+                password: [
+                    { required: true, message: '请输入密码', trigger: 'blur' },
+                    {
+                        pattern: /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,30}/,
+                        message: '密码必须包含大小写字母和数字,且长度为8-30',
+                        trigger: 'blur'
+                    }
+                ],
                 phone: [
                     {
-                        pattern: /^1[3-9]\d{9}$/,
+                        regexp: /^1[3-9]\d{9}$/,
                         message: '请输入正确的手机号',
                         trigger: 'blur'
                     }
                 ],
                 authorities: [{ required: true, message: '请选择角色', trigger: 'blur' }],
-                saving: false
+                email: [
+                    { required: true, message: '请输入邮箱', trigger: 'blur' },
+                    { type: 'email', message: '请输入正确的邮箱', trigger: 'blur' }
+                ]
             },
             authorities: []
         };
@@ -141,40 +122,49 @@ export default {
         submit() {
             this.saving = true;
             this.$http
-                .post(this.formData.id ? '/user/save' : '/user/create', this.formData, { body: 'json' })
+                .post('/user/save', this.formData, { body: 'json' })
                 .then(res => {
                     this.saving = false;
                     this.$message.success('成功');
                     this.formData = res;
-                    this.$router.replace({
-                        query: {
-                            id: res.id
-                        }
-                    });
+                    this.$router.go(-1);
                 })
                 .catch(e => {
-                    console.log(e);
                     this.saving = false;
+                    console.log(e);
                     this.$message.error(e.error);
                 });
         },
         del() {
             this.$confirm('确认删除吗?', '提示', { type: 'warning' })
                 .then(() => {
-                    return this.$http.post(`/user/del/${this.formData.id}`);
-                })
-                .then(res => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
+                    this.$http
+                        .post({
+                            url: '/userInfo/del',
+                            data: {
+                                id: this.formData.id
+                            }
+                        })
+                        .then(res => {
+                            if (res.success) {
+                                this.$message.success('成功');
+                                this.$router.go(-1);
+                            } else {
+                                this.$message.warning('失败');
+                            }
+                        });
                 })
-                .catch(e => {
-                    if ('cancel' !== e) {
-                        this.$message.error(e.error || '删除失败');
-                    }
-                });
+                .catch(() => {});
         },
         resetPassword() {
-            this.$prompt('请输入新密码', '重置密码', { inputType: 'password' })
+            this.$prompt('请输入新密码', '重置密码', {
+                inputType: 'password',
+                inputType: 'password',
+                inputPattern: /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,30}/,
+                inputErrorMessage: '密码必须包含大小写字母和数字,且长度为8-30',
+                closeOnClickModal: false,
+                closeOnPressEscape: false
+            })
                 .then(res => {
                     console.log(res);
                     if (res.value) {
@@ -196,31 +186,8 @@ export default {
                     }
                 })
                 .catch(() => {});
-        },
-        gen() {
-            const icon = createIcon({
-                size: 10,
-                scale: 20
-            });
-            this.$http.post('/upload/base64', { base64: icon.toDataURL() }).then(res => {
-                this.formData.avatar = res;
-            });
-            const card = faker.helpers.createCard();
-            this.formData.username = card.username;
-            this.formData.nickname = card.name;
-            this.formData.phone = card.phone;
-            this.$message('ok');
-            console.log(card);
         }
     }
 };
 </script>
-<style lang="less" scoped>
-.gen {
-    position: absolute;
-    top: 0;
-    right: -50px;
-    width: 50px;
-    height: 32px;
-}
-</style>
+<style lang="less" scoped></style>

+ 120 - 0
src/main/data-center-admin/src/views/editUserMenu.vue

@@ -0,0 +1,120 @@
+<template>
+    <el-dialog
+        id="userMenu"
+        width="30%"
+        :title="editMenu.title"
+        :visible.sync="editMenu.editDialogVisible"
+        append-to-body
+        :before-close="handleClose"
+        @open="open"
+        :close-on-click-modal="false"
+    >
+        <el-tree
+            :props="props1"
+            :show-checkbox="true"
+            default-expand-all
+            node-key="id"
+            ref="tree"
+            :data="menuList"
+            @check="handleCheckChange"
+            highlight-current
+            v-loading="loading"
+        >
+        </el-tree>
+        <div slot="footer" class="dialog-footer">
+            <el-button @click="handleClose" :disabled="saving">取 消</el-button>
+            <el-button type="primary" @click="handleSubmit" :loading="saving">确 定</el-button>
+        </div>
+    </el-dialog>
+</template>
+
+<script>
+export default {
+    name: 'userMenu',
+    props: ['editMenu'],
+    data: function() {
+        return {
+            loading: false,
+            menuList: [],
+            checkedId: [],
+            checkedTreeId: [],
+            props1: {
+                label: 'name',
+                children: 'children'
+            },
+            saving: false
+        };
+    },
+    components: {},
+    methods: {
+        open() {
+            this.queryMenu();
+        },
+        queryMenu() {
+            this.$http
+                .get('/menu/allUserMenu', { authorityName: this.editMenu.roleId })
+                .then(res => {
+                    this.checkedId = [];
+                    this.menuList = res.menuList;
+                    this.checkedId = res.menuId;
+                    if (this.checkedId != undefined && this.checkedId.length > 0) {
+                        this.setCheckedKeys(this.checkedId);
+                    }
+                    this.loading = false;
+                })
+                .catch(e => {
+                    this.loading = false;
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        },
+        setCheckedKeys(ids) {
+            this.$refs.tree.setCheckedKeys(ids);
+        },
+        handleCheckChange(data, checked) {
+            this.checkedTreeId = this.$refs.tree.getCheckedKeys();
+        },
+        handleClose() {
+            this.$emit('closeEditMenu', false); // 给父组件传值,隐藏弹出框
+        },
+        handleSubmit() {
+            // 为该角色添加权限;
+            this.saving = true;
+            this.$axios
+                .post(
+                    '/authorityMenu/save',
+                    { authorityName: this.editMenu.roleId, menuId: this.checkedTreeId.join(',') },
+                    { emulateJSON: true }
+                )
+                .then(res => {
+                    this.saving = false;
+                    let success = res.data.success;
+                    if (success === true) {
+                        this.$message({
+                            type: 'success',
+                            message: '提交成功'
+                        });
+                        this.$emit('closeEditMenu', false); // 给父组件传值,隐藏弹出框
+                    } else {
+                        this.$message.error(res.data.message);
+                    }
+                })
+                .catch(error => {
+                    this.saving = false;
+                    console.log(error);
+                    this.$message.error('服务器暂时无法连接,请稍后再试');
+                });
+        }
+    },
+    mounted: function() {
+        // this.$nextTick(function() {});
+    }
+};
+</script>
+
+<style>
+#userMenu .el-dialog__body {
+    overflow: auto;
+    max-height: 310px;
+}
+</style>

+ 77 - 1
src/main/data-center-admin/yarn.lock

@@ -822,6 +822,13 @@
     lodash "^4.17.13"
     to-fast-properties "^2.0.0"
 
+"@chenfengyuan/vue-qrcode@^1.0.2":
+  version "1.0.2"
+  resolved "https://registry.nlark.com/@chenfengyuan/vue-qrcode/download/@chenfengyuan/vue-qrcode-1.0.2.tgz#37d71902e166e1ae58176bd6cb9c40905c1b0949"
+  integrity sha1-N9cZAuFm4a5YF2vWy5xAkFwbCUk=
+  dependencies:
+    qrcode "^1.4.4"
+
 "@download/blockies@https://github.com/download13/blockies.git":
   version "1.0.3"
   resolved "https://github.com/download13/blockies.git#55518d38203582cd4a7b55204b7a26f8032ea07e"
@@ -1853,6 +1860,11 @@ base64-js@^1.0.2:
   resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
   integrity sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=
 
+base64-js@^1.3.1:
+  version "1.5.1"
+  resolved "https://registry.nlark.com/base64-js/download/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+  integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=
+
 base@^0.11.1:
   version "0.11.2"
   resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
@@ -2095,11 +2107,34 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5:
     node-releases "^1.1.53"
     pkg-up "^2.0.0"
 
+buffer-alloc-unsafe@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.nlark.com/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+  integrity sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=
+
+buffer-alloc@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.nlark.com/buffer-alloc/download/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+  integrity sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=
+  dependencies:
+    buffer-alloc-unsafe "^1.1.0"
+    buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.nlark.com/buffer-fill/download/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+  integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+
 buffer-from@^1.0.0:
   version "1.1.1"
   resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
   integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=
 
+buffer-from@^1.1.1:
+  version "1.1.2"
+  resolved "https://registry.nlark.com/buffer-from/download/buffer-from-1.1.2.tgz?cache=0&sync_timestamp=1627578710888&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbuffer-from%2Fdownload%2Fbuffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+  integrity sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=
+
 buffer-indexof@^1.0.0:
   version "1.1.1"
   resolved "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
@@ -2124,6 +2159,14 @@ buffer@^4.3.0:
     ieee754 "^1.1.4"
     isarray "^1.0.0"
 
+buffer@^5.4.3:
+  version "5.7.1"
+  resolved "https://registry.nlark.com/buffer/download/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+  integrity sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=
+  dependencies:
+    base64-js "^1.3.1"
+    ieee754 "^1.1.13"
+
 builtin-status-codes@^3.0.0:
   version "3.0.0"
   resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -3361,6 +3404,11 @@ diffie-hellman@^5.0.0:
     miller-rabin "^4.0.0"
     randombytes "^2.0.0"
 
+dijkstrajs@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.nlark.com/dijkstrajs/download/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257"
+  integrity sha1-LkjA07glRir+datK1egpyOzjYlc=
+
 dir-glob@^2.0.0, dir-glob@^2.2.2:
   version "2.2.2"
   resolved "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
@@ -5207,6 +5255,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1:
   dependencies:
     postcss "^7.0.14"
 
+ieee754@^1.1.13:
+  version "1.2.1"
+  resolved "https://registry.nlark.com/ieee754/download/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+  integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=
+
 ieee754@^1.1.4:
   version "1.1.13"
   resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
@@ -5773,6 +5826,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
   integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
 
+isarray@^2.0.1:
+  version "2.0.5"
+  resolved "https://registry.nlark.com/isarray/download/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+  integrity sha1-ivHkwSISRMxiRZ+vOJQNTmRKVyM=
+
 isexe@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -7691,6 +7749,11 @@ plugin-error@^0.1.2:
     arr-union "^2.0.1"
     extend-shallow "^1.1.2"
 
+pngjs@^3.3.0:
+  version "3.4.0"
+  resolved "https://registry.nlark.com/pngjs/download/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
+  integrity sha1-mcp9clll+2VYFOr2XzjxK72/VV8=
+
 pnp-webpack-plugin@^1.6.4:
   version "1.6.4"
   resolved "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149"
@@ -8208,6 +8271,19 @@ q@^1.1.2:
   resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
   integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
 
+qrcode@^1.4.4:
+  version "1.4.4"
+  resolved "https://registry.nlark.com/qrcode/download/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83"
+  integrity sha1-8MQ1aKfnUQpV78O4jZYC9xlj6oM=
+  dependencies:
+    buffer "^5.4.3"
+    buffer-alloc "^1.2.0"
+    buffer-from "^1.1.1"
+    dijkstrajs "^1.0.1"
+    isarray "^2.0.1"
+    pngjs "^3.3.0"
+    yargs "^13.2.4"
+
 qs@6.7.0:
   version "6.7.0"
   resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
@@ -10563,7 +10639,7 @@ yargs-parser@^18.1.1:
     camelcase "^5.0.0"
     decamelize "^1.2.0"
 
-yargs@^13.3.2:
+yargs@^13.2.4, yargs@^13.3.2:
   version "13.3.2"
   resolved "https://registry.npm.taobao.org/yargs/download/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
   integrity sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=

+ 1 - 1
src/main/data-center/.env.production

@@ -1 +1 @@
-VUE_APP_BASE_URL=http://jmrh.izouma.com
+VUE_APP_BASE_URL=/

+ 3 - 0
src/main/data-center/public/index.html

@@ -6,6 +6,9 @@
         <meta name="viewport" content="width=device-width,initial-scale=1.0" />
         <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
         <title>江西省军民融合监测分析系统</title>
+        <script src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=yPvs3e8QHCRechjGV8pUYeK4ATTLhUIw"></script>
+        <script src="https://mapv.baidu.com/build/mapv.min.js"></script>
+        <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.139/dist/mapvgl.min.js"></script>
     </head>
     <body>
         <noscript>

+ 78 - 3
src/main/data-center/src/components/mapChart.vue

@@ -7,6 +7,17 @@ import * as echarts from 'echarts';
 import JiangXi from '../JiangXi.json';
 import 'echarts-gl';
 import menuOptions from '../mixins/menuOptions';
+import { initMap, purpleStyle } from '../plugins/common';
+// eslint-disable-next-line no-redeclare
+/* global BMapGL */
+
+/* global mapv */
+
+/* global mapvgl */
+
+/* global initMap */
+
+/* global whiteStyle */
 export default {
     name: 'MapChart',
     mixins: [menuOptions],
@@ -73,11 +84,11 @@ export default {
             }
         },
         init() {
-            this.clearDom();
+            // this.clearDom();
             this.$nextTick(() => {
                 console.log(this.chooseMenu);
                 if (this.chooseMenu === 0) {
-                    this.initHeatmap();
+                    this.initBaidu();
                 } else if (this.chooseMenu === 2 || this.chooseMenu === 5 || this.chooseMenu === 3) {
                     this.initScatter();
                 } else if (this.chooseMenu === 4 || this.chooseMenu === 6) {
@@ -87,10 +98,74 @@ export default {
                             : ['高新基地', '高级高新基地', '重点高新基地'];
                     this.initScatter('more');
                 } else if (this.chooseMenu === 1) {
-                    this.init3D();
+                    this.initHeatmap();
                 }
             });
         },
+        initBaidu() {
+            var map = initMap(
+                {
+                    tilt: 30,
+                    heading: 0,
+                    center: [115.853087, 28.689709],
+                    zoom: 9,
+                    style: purpleStyle,
+                    skyColors: [
+                        // 地面颜色
+                        'rgba(226, 237, 248, 0)',
+                        // 天空颜色
+                        'rgba(186, 211, 252, 1)',
+                    ],
+                },
+                'map-chart'
+            );
+
+            var data = [];
+
+            var citys = ['南昌', '景德镇', '萍乡', '九江', '新余', '鹰潭', '赣州', '吉安', '宜春', '抚州', '上饶'];
+            var randomCount = citys.length;
+
+            // 构造数据
+            while (randomCount--) {
+                var cityName = citys[randomCount];
+                var cityCenter = mapv.utilCityCenter.getCenterByCityName(cityName);
+                data.push({
+                    geometry: {
+                        type: 'Point',
+                        coordinates: [cityCenter.lng, cityCenter.lat],
+                    },
+                    properties: {
+                        text: cityName + '\n' + cityCenter.lng + ',' + cityCenter.lat,
+                        // textColor: '#fff',
+                        // borderColor: ['#0f0', '#f00', '#00f'][randomCount % 3],
+                        // backgroundColor: ['#0f0', '#f00', '#00f'][randomCount % 3],
+                    },
+                });
+            }
+
+            var view = new mapvgl.View({
+                map: map,
+            });
+
+            var layer = new mapvgl.LabelLayer({
+                textAlign: 'center',
+                textColor: '#fc0',
+                borderColor: '#666',
+                backgroundColor: '#666',
+                padding: [2, 5],
+                borderRadius: 5,
+                fontSize: 12,
+                lineHeight: 16,
+                collides: true, // 是否开启碰撞检测, 数量较多时建议打开
+                enablePicked: true,
+                onClick: (e) => {
+                    // 点击事件
+                    console.log('click', e);
+                },
+            });
+            view.addLayer(layer);
+            layer.setData(data);
+        },
         init3D() {
             var chartDom = document.getElementById('map-chart');
             this.myChart = echarts.init(chartDom);

+ 2389 - 0
src/main/data-center/src/plugins/common.js

@@ -0,0 +1,2389 @@
+/**
+ * 初始化地图
+ */
+
+// eslint-disable-next-line no-redeclare
+/* global BMapGL */
+/* global darkStyle */
+
+function initMap(options, com) {
+    options = Object.assign(
+        {
+            tilt: 60,
+            heading: 0,
+        },
+        options
+    );
+    var map = new BMapGL.Map(com || 'map_container', {
+        restrictCenter: false,
+        style: { styleJson: options.style || darkStyle },
+    });
+    map.enableKeyboard();
+    map.enableScrollWheelZoom();
+    map.enableInertialDragging();
+    map.enableContinuousZoom();
+
+    map.setDisplayOptions(
+        options.displayOptions || {
+            indoor: false,
+            poi: true,
+            skyColors: options.skyColors || ['rgba(5, 5, 30, 0.01)', 'rgba(5, 5, 30, 1.0)'],
+        }
+    );
+    if (options.center && options.zoom) {
+        map.centerAndZoom(new BMapGL.Point(options.center[0], options.center[1]), options.zoom);
+    }
+
+    map.setTilt(options.tilt);
+    map.setHeading(options.heading);
+    return map;
+}
+
+var snowStyle = [
+    {
+        featureType: 'background',
+        elementType: 'geometry',
+        stylers: {
+            color: '#fefefeff',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#f0f1f7ff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#e8eaf5ff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#e8eaf5ff',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#e8eaf5ff',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#80868dff',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'districtlabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#7d82b0ff',
+        },
+    },
+    {
+        featureType: 'districtlabel',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#80868dff',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'geometry',
+        stylers: {
+            color: '#eef1fbff',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'geometry',
+        stylers: {
+            // "color": "#a7c9ffff"
+            color: '#a7c9ffff',
+        },
+    },
+    {
+        featureType: 'green',
+        elementType: 'geometry',
+        stylers: {
+            color: '#eef1fbff',
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#7d82b0ff',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'village',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry',
+        stylers: {
+            weight: 3,
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#e8eaf5ff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#e8eaf5ff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+];
+
+var darkStyle = [
+    {
+        featureType: 'background',
+        elementType: 'geometry',
+        stylers: {
+            color: '#070c17ff',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#151e25ff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#27303bff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#27303bff',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#27303bff',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#80868dff',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'districtlabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#71767aff',
+        },
+    },
+    {
+        featureType: 'districtlabel',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#80868dff',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'geometry',
+        stylers: {
+            color: '#070c17ff',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'geometry',
+        stylers: {
+            color: '#141d27ff',
+        },
+    },
+    {
+        featureType: 'green',
+        elementType: 'geometry',
+        stylers: {
+            color: '#122228ff',
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#5f6468ff',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'village',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry',
+        stylers: {
+            weight: 3,
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#27303bff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#27303bff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff00',
+        },
+    },
+];
+
+var purpleStyle = [
+    {
+        featureType: 'water',
+        elementType: 'all',
+        stylers: {
+            color: '#021019ff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#000000ff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#147a92ff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#000000ff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#0b3d51ff',
+        },
+    },
+    {
+        featureType: 'local',
+        elementType: 'geometry',
+        stylers: {
+            color: '#000000ff',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#000000ff',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#08304bff',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'all',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#857f7fff',
+        },
+    },
+    {
+        featureType: 'all',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#000000ff',
+        },
+    },
+    {
+        featureType: 'green',
+        elementType: 'geometry',
+        stylers: {
+            color: '#062032ff',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'geometry',
+        stylers: {
+            color: '#022338ff',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'all',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'all',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'all',
+        stylers: {
+            visibility: 'on',
+            color: '#505565ff',
+        },
+    },
+    {
+        featureType: 'green',
+        elementType: 'all',
+        stylers: {
+            color: '#353b4dff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.fill',
+        stylers: {
+            visibility: 'on',
+            color: '#2a2e3bff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#4b5163ff',
+        },
+    },
+    {
+        featureType: 'administrative',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#8e99bdff',
+        },
+    },
+    {
+        featureType: 'administrative',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#2f3547ff',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#727c9aff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#293045ff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#777e93ff',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'all',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            visibility: 'off',
+            color: '#787f95ff',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#40475eff',
+        },
+    },
+    {
+        featureType: 'building',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#485161ff',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#374053ff',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#8792adff',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#292f48ff',
+        },
+    },
+    {
+        featureType: 'scenicspotslabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'scenicspotslabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'village',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'land',
+        elementType: 'geometry',
+        stylers: {
+            color: '#40495aff',
+            visibility: 'on',
+        },
+    },
+];
+
+var whiteStyle = [
+    {
+        featureType: 'water',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            color: '#ccd6d7ff',
+        },
+    },
+    {
+        featureType: 'green',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            color: '#dee5e5ff',
+        },
+    },
+    {
+        featureType: 'building',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'building',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#d1dbdbff',
+        },
+    },
+    {
+        featureType: 'building',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#aab6b6ff',
+        },
+    },
+    {
+        featureType: 'subwaystation',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            color: '#888fa0ff',
+        },
+    },
+    {
+        featureType: 'education',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            color: '#e1e7e7ff',
+        },
+    },
+    {
+        featureType: 'medical',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            color: '#d1dbdbff',
+        },
+    },
+    {
+        featureType: 'scenicspots',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            color: '#d1dbdbff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            weight: '4',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#cacfcfff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            weight: '2',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#fbfffeff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#cacfcfff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'arterial',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'local',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+            weight: '1',
+        },
+    },
+    {
+        featureType: 'local',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#fbfffeff',
+        },
+    },
+    {
+        featureType: 'local',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#cacfcfff',
+        },
+    },
+    {
+        featureType: 'local',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'local',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'local',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            weight: '1',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#9494941a',
+        },
+    },
+    {
+        featureType: 'railway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff1a',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            weight: '1',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#c3bed433',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#ffffff33',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#979c9aff',
+        },
+    },
+    {
+        featureType: 'subway',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'continent',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'continent',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'continent',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#333333ff',
+        },
+    },
+    {
+        featureType: 'continent',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'city',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'city',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'city',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#454d50ff',
+        },
+    },
+    {
+        featureType: 'city',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#454d50ff',
+        },
+    },
+    {
+        featureType: 'town',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#fbfffeff',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'districtlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'districtlabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#888fa0ff',
+        },
+    },
+    {
+        featureType: 'transportation',
+        elementType: 'geometry',
+        stylers: {
+            color: '#d1dbdbff',
+        },
+    },
+    {
+        featureType: 'companylabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'restaurantlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'lifeservicelabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'carservicelabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'financelabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'otherlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'village',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'district',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'land',
+        elementType: 'geometry',
+        stylers: {
+            color: '#edf3f3ff',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#cacfcfff',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#cacfcfff',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#cacfcfff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry.stroke',
+        stylers: {
+            color: '#cacfcfff',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'subwaylabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiarywaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'highwaysign',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#fbfffeff',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'highway',
+        stylers: {
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        stylers: {
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        stylers: {
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'highway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        stylers: {
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        stylers: {
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        stylers: {
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        stylers: {
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '8-8',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '8-8',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '8-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        stylers: {
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        stylers: {
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        stylers: {
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '6',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '7',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+            level: '8',
+            curZoomRegionId: '0',
+            curZoomRegion: '6-8',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#fbfffeff',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#8f5a33ff',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'country',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#8f5a33ff',
+        },
+    },
+    {
+        featureType: 'country',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'country',
+        elementType: 'labels.text',
+        stylers: {
+            fontsize: '28',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'geometry',
+        stylers: {
+            color: '#dfe7e7ff',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#fbfffeff',
+        },
+    },
+    {
+        featureType: 'tertiaryway',
+        elementType: 'geometry.fill',
+        stylers: {
+            color: '#fbfffeff',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'scenicspots',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'scenicspots',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'scenicspotslabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'scenicspotslabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'educationlabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'educationlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'medicallabel',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'medicallabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'companylabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'restaurantlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'hotellabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'hotellabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'shoppinglabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'shoppinglabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'lifeservicelabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'carservicelabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'transportationlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'transportationlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'financelabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'entertainment',
+        elementType: 'geometry',
+        stylers: {
+            color: '#d1dbdbff',
+        },
+    },
+    {
+        featureType: 'estate',
+        elementType: 'geometry',
+        stylers: {
+            color: '#d1dbdbff',
+        },
+    },
+    {
+        featureType: 'shopping',
+        elementType: 'geometry',
+        stylers: {
+            color: '#d1dbdbff',
+        },
+    },
+    {
+        featureType: 'education',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'education',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'medical',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'medical',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'transportation',
+        elementType: 'labels.text.fill',
+        stylers: {
+            color: '#999999ff',
+        },
+    },
+    {
+        featureType: 'transportation',
+        elementType: 'labels.text.stroke',
+        stylers: {
+            color: '#ffffffff',
+        },
+    },
+    {
+        featureType: 'road',
+        elementType: 'geometry',
+        stylers: {
+            visibility: 'on',
+        },
+    },
+    {
+        featureType: 'nationalway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'provincialway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'cityhighway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'tertiaryway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'fourlevelway',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'water',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'manmade',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'education',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'medical',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'scenicspots',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'transportation',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'entertainmentlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'estatelabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'businesstowerlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'governmentlabel',
+        elementType: 'labels.icon',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'governmentlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'businesstowerlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'estatelabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'entertainmentlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'medicallabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'educationlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'scenicspotslabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'airportlabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+    {
+        featureType: 'poilabel',
+        elementType: 'labels',
+        stylers: {
+            visibility: 'off',
+        },
+    },
+];
+
+export { initMap, snowStyle, darkStyle, purpleStyle, whiteStyle };

+ 24 - 3
src/main/data-center/src/plugins/http.js

@@ -24,6 +24,15 @@ function decrypt(content) {
     return decrypted.toString(CryptoJS.enc.Utf8);
 }
 
+function encrypt(content) {
+    const key = CryptoJS.enc.Hex.parse('2181E9E80460B852859EE455AC5203D9');
+    var encrypted = CryptoJS.AES.encrypt(content, key, {
+        mode: CryptoJS.mode.ECB,
+        padding: CryptoJS.pad.Pkcs7,
+    });
+    return encrypted.ciphertext.toString(CryptoJS.enc.Hex);
+}
+
 axiosInstance.interceptors.request.use(
     function (config) {
         config.headers = config.headers || {};
@@ -94,15 +103,27 @@ export default {
             },
             post(url, body, options) {
                 options = options || {};
+                options.headers = options.headers || {};
                 body = body || {};
-                if (!(body instanceof FormData)) {
-                    if (options.body !== 'json') {
+                if (body instanceof FormData) {
+                    //
+                } else {
+                    options.headers['Content-Encrypted'] = 'true';
+                    if (options.body === 'json') {
+                        body = encrypt(JSON.stringify(body));
+                        options.headers['content-type'] = 'application/json';
+                    } else {
+                        for (let key of Object.keys(body)) {
+                            if (body[key] != undefined && body[key] !== '') {
+                                body[key] = encrypt(body[key] + '');
+                            }
+                        }
                         body = qs.stringify(body);
                     }
                 }
                 return new Promise((resolve, reject) => {
                     axiosInstance
-                        .post(url, body, { withCredentials: true })
+                        .post(url, body, { withCredentials: true, headers: { ...options.headers } })
                         .then((res) => {
                             resolve(res.data);
                         })

+ 87 - 63
src/main/java/cn/licoy/encryptbody/advice/DecryptRequestBodyAdvice.java

@@ -4,6 +4,7 @@ import cn.licoy.encryptbody.annotation.decrypt.AESDecryptBody;
 import cn.licoy.encryptbody.annotation.decrypt.DESDecryptBody;
 import cn.licoy.encryptbody.annotation.decrypt.DecryptBody;
 import cn.licoy.encryptbody.annotation.decrypt.RSADecryptBody;
+import cn.licoy.encryptbody.annotation.encrypt.*;
 import cn.licoy.encryptbody.bean.DecryptAnnotationInfoBean;
 import cn.licoy.encryptbody.bean.DecryptHttpInputMessage;
 import cn.licoy.encryptbody.config.EncryptBodyConfig;
@@ -14,6 +15,8 @@ import cn.licoy.encryptbody.util.AESEncryptUtil;
 import cn.licoy.encryptbody.util.CheckUtils;
 import cn.licoy.encryptbody.util.DESEncryptUtil;
 import cn.licoy.encryptbody.util.StringUtils;
+import jodd.util.ReflectUtil;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,20 +25,26 @@ import org.springframework.core.annotation.Order;
 import org.springframework.http.HttpInputMessage;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice;
 
+import javax.annotation.Nonnull;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * 请求数据的加密信息解密处理<br>
- *     本类只对控制器参数中含有<strong>{@link org.springframework.web.bind.annotation.RequestBody}</strong>
- *     以及package为<strong><code>cn.licoy.encryptbody.annotation.decrypt</code></strong>下的注解有效
- * @see RequestBodyAdvice
+ * 本类只对控制器参数中含有<strong>{@link org.springframework.web.bind.annotation.RequestBody}</strong>
+ * 以及package为<strong>{@link cn.licoy.encryptbody.annotation.decrypt}</strong>下的注解有效
+ *
  * @author licoy.cn
  * @version 2018/9/7
+ * @see RequestBodyAdvice
  */
 @Order(1)
 @ControllerAdvice
@@ -46,65 +55,78 @@ public class DecryptRequestBodyAdvice implements RequestBodyAdvice {
     private EncryptBodyConfig config;
 
     @Override
-    public boolean supports(MethodParameter methodParameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {
+    public boolean supports(MethodParameter methodParameter, @Nonnull Type targetType, @Nonnull Class<? extends HttpMessageConverter<?>> converterType) {
         Annotation[] annotations = methodParameter.getDeclaringClass().getAnnotations();
-        if(annotations!=null && annotations.length>0){
+        if (annotations != null && annotations.length > 0) {
             for (Annotation annotation : annotations) {
-                if(annotation instanceof DecryptBody ||
+                if (annotation instanceof DecryptBody ||
                         annotation instanceof AESDecryptBody ||
                         annotation instanceof DESDecryptBody ||
-                        annotation instanceof RSADecryptBody){
+                        annotation instanceof RSADecryptBody) {
                     return true;
                 }
             }
         }
-        return methodParameter.getMethod().isAnnotationPresent(DecryptBody.class) ||
-                methodParameter.getMethod().isAnnotationPresent(AESDecryptBody.class) ||
-                methodParameter.getMethod().isAnnotationPresent(DESDecryptBody.class) ||
-                methodParameter.getMethod().isAnnotationPresent(RSADecryptBody.class);
+        if (Arrays.stream(ReflectUtil.getSuperclasses(methodParameter.getDeclaringClass()))
+                .flatMap(clazz -> Arrays.stream(clazz.getAnnotations()))
+                .anyMatch(annotation -> annotation instanceof DecryptBody ||
+                        annotation instanceof AESDecryptBody ||
+                        annotation instanceof DESDecryptBody ||
+                        annotation instanceof RSADecryptBody)) {
+            return true;
+        }
+        return methodParameter.getMethod() != null &&
+                (methodParameter.getMethod().isAnnotationPresent(DecryptBody.class) ||
+                        methodParameter.getMethod().isAnnotationPresent(AESDecryptBody.class) ||
+                        methodParameter.getMethod().isAnnotationPresent(DESDecryptBody.class) ||
+                        methodParameter.getMethod().isAnnotationPresent(RSADecryptBody.class));
     }
 
     @Override
-    public Object handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {
+    public Object handleEmptyBody(Object body, @Nonnull HttpInputMessage inputMessage,
+                                  @Nonnull MethodParameter parameter, @Nonnull Type targetType,
+                                  @Nonnull Class<? extends HttpMessageConverter<?>> converterType) {
         return body;
     }
 
+    @SneakyThrows
     @Override
-    public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) throws IOException {
-        if(inputMessage.getBody()==null){
-            return inputMessage;
-        }
+    @Nonnull
+    public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, @Nonnull MethodParameter parameter,
+                                           @Nonnull Type targetType,
+                                           @Nonnull Class<? extends HttpMessageConverter<?>> converterType) throws IOException {
+        inputMessage.getBody();
         String body;
         try {
-            body = IOUtils.toString(inputMessage.getBody(),config.getEncoding());
-        }catch (Exception e){
+            body = IOUtils.toString(inputMessage.getBody(), config.getEncoding());
+        } catch (Exception e) {
             throw new DecryptBodyFailException("Unable to get request body data," +
                     " please check if the sending data body or request method is in compliance with the specification." +
                     " (无法获取请求正文数据,请检查发送数据体或请求方法是否符合规范。)");
         }
-        if(body==null || StringUtils.isNullOrEmpty(body)){
+        if (body == null || StringUtils.isNullOrEmpty(body)) {
             throw new DecryptBodyFailException("The request body is NULL or an empty string, so the decryption failed." +
                     " (请求正文为NULL或为空字符串,因此解密失败。)");
         }
         String decryptBody = null;
         DecryptAnnotationInfoBean methodAnnotation = this.getMethodAnnotation(parameter);
-        if(methodAnnotation!=null){
-            decryptBody = switchDecrypt(body,methodAnnotation);
-        }else{
+        if (methodAnnotation != null) {
+            decryptBody = switchDecrypt(body, methodAnnotation);
+        } else {
             DecryptAnnotationInfoBean classAnnotation = this.getClassAnnotation(parameter.getDeclaringClass());
-            if(classAnnotation!=null){
-                decryptBody = switchDecrypt(body,classAnnotation);
+            if (classAnnotation != null) {
+                decryptBody = switchDecrypt(body, classAnnotation);
             }
         }
-        if(decryptBody==null){
+        if (decryptBody == null) {
             throw new DecryptBodyFailException("Decryption error, " +
                     "please check if the selected source data is encrypted correctly." +
                     " (解密错误,请检查选择的源数据的加密方式是否正确。)");
         }
         try {
             InputStream inputStream = IOUtils.toInputStream(decryptBody, config.getEncoding());
-            return new DecryptHttpInputMessage(inputStream,inputMessage.getHeaders());
-        }catch (Exception e){
+            return new DecryptHttpInputMessage(inputStream, inputMessage.getHeaders());
+        } catch (Exception e) {
             throw new DecryptBodyFailException("The string is converted to a stream format exception." +
                     " Please check if the format such as encoding is correct." +
                     " (字符串转换成流格式异常,请检查编码等格式是否正确。)");
@@ -118,24 +140,25 @@ public class DecryptRequestBodyAdvice implements RequestBodyAdvice {
 
     /**
      * 获取方法控制器上的加密注解信息
+     *
      * @param methodParameter 控制器方法
      * @return 加密注解信息
      */
-    private DecryptAnnotationInfoBean getMethodAnnotation(MethodParameter methodParameter){
-        if(methodParameter.getMethod().isAnnotationPresent(DecryptBody.class)){
+    private DecryptAnnotationInfoBean getMethodAnnotation(MethodParameter methodParameter) {
+        if (methodParameter.getMethod().isAnnotationPresent(DecryptBody.class)) {
             DecryptBody decryptBody = methodParameter.getMethodAnnotation(DecryptBody.class);
             return DecryptAnnotationInfoBean.builder()
                     .decryptBodyMethod(decryptBody.value())
                     .key(decryptBody.otherKey())
                     .build();
         }
-        if(methodParameter.getMethod().isAnnotationPresent(DESDecryptBody.class)){
+        if (methodParameter.getMethod().isAnnotationPresent(DESDecryptBody.class)) {
             return DecryptAnnotationInfoBean.builder()
                     .decryptBodyMethod(DecryptBodyMethod.DES)
                     .key(methodParameter.getMethodAnnotation(DESDecryptBody.class).otherKey())
                     .build();
         }
-        if(methodParameter.getMethod().isAnnotationPresent(AESDecryptBody.class)){
+        if (methodParameter.getMethod().isAnnotationPresent(AESDecryptBody.class)) {
             return DecryptAnnotationInfoBean.builder()
                     .decryptBodyMethod(DecryptBodyMethod.AES)
                     .key(methodParameter.getMethodAnnotation(AESDecryptBody.class).otherKey())
@@ -146,32 +169,32 @@ public class DecryptRequestBodyAdvice implements RequestBodyAdvice {
 
     /**
      * 获取类控制器上的加密注解信息
+     *
      * @param clazz 控制器类
      * @return 加密注解信息
      */
-    private DecryptAnnotationInfoBean getClassAnnotation(Class clazz){
-        Annotation[] annotations = clazz.getDeclaredAnnotations();
-        if(annotations!=null && annotations.length>0){
-            for (Annotation annotation : annotations) {
-                if(annotation instanceof DecryptBody){
-                    DecryptBody decryptBody = (DecryptBody) annotation;
-                    return DecryptAnnotationInfoBean.builder()
-                            .decryptBodyMethod(decryptBody.value())
-                            .key(decryptBody.otherKey())
-                            .build();
-                }
-                if(annotation instanceof DESDecryptBody){
-                    return DecryptAnnotationInfoBean.builder()
-                            .decryptBodyMethod(DecryptBodyMethod.DES)
-                            .key(((DESDecryptBody) annotation).otherKey())
-                            .build();
-                }
-                if(annotation instanceof AESDecryptBody){
-                    return DecryptAnnotationInfoBean.builder()
-                            .decryptBodyMethod(DecryptBodyMethod.AES)
-                            .key(((AESDecryptBody) annotation).otherKey())
-                            .build();
-                }
+    private DecryptAnnotationInfoBean getClassAnnotation(Class clazz) {
+        List<Annotation> annotations = new ArrayList<>(Arrays.asList(clazz.getSuperclass().getDeclaredAnnotations()));
+        annotations.addAll(Arrays.asList(clazz.getDeclaredAnnotations()));
+        for (Annotation annotation : annotations) {
+            if (annotation instanceof DecryptBody) {
+                DecryptBody decryptBody = (DecryptBody) annotation;
+                return DecryptAnnotationInfoBean.builder()
+                        .decryptBodyMethod(decryptBody.value())
+                        .key(decryptBody.otherKey())
+                        .build();
+            }
+            if (annotation instanceof DESDecryptBody) {
+                return DecryptAnnotationInfoBean.builder()
+                        .decryptBodyMethod(DecryptBodyMethod.DES)
+                        .key(((DESDecryptBody) annotation).otherKey())
+                        .build();
+            }
+            if (annotation instanceof AESDecryptBody) {
+                return DecryptAnnotationInfoBean.builder()
+                        .decryptBodyMethod(DecryptBodyMethod.AES)
+                        .key(((AESDecryptBody) annotation).otherKey())
+                        .build();
             }
         }
         return null;
@@ -180,21 +203,22 @@ public class DecryptRequestBodyAdvice implements RequestBodyAdvice {
 
     /**
      * 选择加密方式并进行解密
+     *
      * @param formatStringBody 目标解密字符串
-     * @param infoBean 加密信息
+     * @param infoBean         加密信息
      * @return 解密结果
      */
-    private String switchDecrypt(String formatStringBody,DecryptAnnotationInfoBean infoBean){
+    private String switchDecrypt(String formatStringBody, DecryptAnnotationInfoBean infoBean) throws Exception {
         DecryptBodyMethod method = infoBean.getDecryptBodyMethod();
-        if(method==null) throw new DecryptMethodNotFoundException();
+        if (method == null) throw new DecryptMethodNotFoundException();
         String key = infoBean.getKey();
-        if(method == DecryptBodyMethod.DES){
-            key = CheckUtils.checkAndGetKey(config.getDesKey(),key,"DES-KEY");
-            return DESEncryptUtil.decrypt(formatStringBody,key);
+        if (method == DecryptBodyMethod.DES) {
+            key = CheckUtils.checkAndGetKey(config.getDesKey(), key, "DES-KEY");
+            return DESEncryptUtil.decrypt(formatStringBody, key);
         }
-        if(method == DecryptBodyMethod.AES){
-            key = CheckUtils.checkAndGetKey(config.getAesKey(),key,"AES-KEY");
-            return AESEncryptUtil.decrypt(formatStringBody,key);
+        if (method == DecryptBodyMethod.AES) {
+            key = CheckUtils.checkAndGetKey(config.getAesKey(), key, "AES-KEY");
+            return AESEncryptUtil.decrypt(formatStringBody, key);
         }
         throw new DecryptBodyFailException();
     }

+ 3 - 1
src/main/java/cn/licoy/encryptbody/advice/EncryptResponseBodyAdvice.java

@@ -11,6 +11,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import cn.licoy.encryptbody.config.EncryptBodyConfig;
 import jodd.util.ReflectUtil;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.MethodParameter;
@@ -87,6 +88,7 @@ public class EncryptResponseBodyAdvice implements ResponseBodyAdvice {
                 returnType.getMethod().isAnnotationPresent(SHAEncryptBody.class);
     }
 
+    @SneakyThrows
     @Override
     public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
                                   Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
@@ -203,7 +205,7 @@ public class EncryptResponseBodyAdvice implements ResponseBodyAdvice {
      * @param infoBean         加密信息
      * @return 加密结果
      */
-    private String switchEncrypt(String formatStringBody, EncryptAnnotationInfoBean infoBean) {
+    private String switchEncrypt(String formatStringBody, EncryptAnnotationInfoBean infoBean) throws Exception {
         EncryptBodyMethod method = infoBean.getEncryptBodyMethod();
         if (method == null) {
             throw new EncryptMethodNotFoundException();

+ 28 - 28
src/main/java/cn/licoy/encryptbody/util/AESEncryptUtil.java

@@ -1,13 +1,15 @@
 package cn.licoy.encryptbody.util;
 
-import javax.crypto.Cipher;
-import javax.crypto.KeyGenerator;
-import javax.crypto.SecretKey;
+import javax.crypto.*;
 import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 
 /**
  * <p>AES加密处理工具类</p>
+ *
  * @author licoy.cn
  * @version 2018/9/5
  */
@@ -15,50 +17,48 @@ public class AESEncryptUtil {
 
     /**
      * AES加密
+     *
      * @param content  字符串内容
      * @param password 密钥
      */
-    public static String encrypt(String content, String password){
-        return aes(content,password,Cipher.ENCRYPT_MODE);
+    public static String encrypt(String content, String password) throws Exception {
+        return aes(content, password, Cipher.ENCRYPT_MODE);
     }
 
 
     /**
      * AES解密
+     *
      * @param content  字符串内容
      * @param password 密钥
      */
-    public static String decrypt(String content, String password){
-        return aes(content,password,Cipher.DECRYPT_MODE);
+    public static String decrypt(String content, String password) throws Exception {
+        return aes(content, password, Cipher.DECRYPT_MODE);
     }
 
     /**
      * AES加密/解密 公共方法
+     *
      * @param content  字符串
      * @param password 密钥
      * @param type     加密:{@link Cipher#ENCRYPT_MODE},解密:{@link Cipher#DECRYPT_MODE}
      */
-    private static String aes(String content, String password, int type) {
-        try {
-            KeyGenerator generator = KeyGenerator.getInstance("AES");
-            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
-            random.setSeed(password.getBytes());
-            generator.init(128, random);
-            SecretKey secretKey = generator.generateKey();
-            byte[] enCodeFormat = secretKey.getEncoded();
-            SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
-            Cipher cipher = Cipher.getInstance("AES");
-            cipher.init(type, key);
-            if (type == Cipher.ENCRYPT_MODE) {
-                byte[] byteContent = content.getBytes("utf-8");
-                return Hex2Util.parseByte2HexStr(cipher.doFinal(byteContent));
-            } else {
-                byte[] byteContent = Hex2Util.parseHexStr2Byte(content);
-                return new String(cipher.doFinal(byteContent));
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
+    private static String aes(String content, String password, int type) throws Exception {
+        KeyGenerator generator = KeyGenerator.getInstance("AES");
+        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+        random.setSeed(password.getBytes());
+        generator.init(128, random);
+        SecretKey secretKey = generator.generateKey();
+        byte[] enCodeFormat = secretKey.getEncoded();
+        SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
+        Cipher cipher = Cipher.getInstance("AES");
+        cipher.init(type, key);
+        if (type == Cipher.ENCRYPT_MODE) {
+            byte[] byteContent = content.getBytes("utf-8");
+            return Hex2Util.parseByte2HexStr(cipher.doFinal(byteContent));
+        } else {
+            byte[] byteContent = Hex2Util.parseHexStr2Byte(content);
+            return new String(cipher.doFinal(byteContent));
         }
-        return null;
     }
 }

+ 4 - 0
src/main/java/com/izouma/jmrh/Application.java

@@ -4,7 +4,9 @@ package com.izouma.jmrh;
 import cn.licoy.encryptbody.annotation.EnableEncryptBody;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
+import org.springframework.scheduling.annotation.EnableScheduling;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 
@@ -12,6 +14,8 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
 @EnableJpaAuditing
 @EnableSwagger2
 @EnableEncryptBody
+@EnableCaching
+@EnableScheduling
 public class Application {
 
     public static void main(String[] args) {

+ 84 - 0
src/main/java/com/izouma/jmrh/config/DecryptFilter.java

@@ -0,0 +1,84 @@
+package com.izouma.jmrh.config;
+
+import cn.licoy.encryptbody.config.EncryptBodyConfig;
+import cn.licoy.encryptbody.util.AESEncryptUtil;
+import cn.licoy.encryptbody.util.CheckUtils;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.io.IOException;
+import java.util.Map;
+
+@Component
+@Order(1)
+@AllArgsConstructor
+@Slf4j
+public class DecryptFilter implements Filter {
+
+    private final EncryptBodyConfig config;
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+        Filter.super.init(filterConfig);
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        if ("true".equals(((HttpServletRequest) servletRequest).getHeader("content-encrypted"))) {
+            filterChain.doFilter(new EncryptedRequest(servletRequest, config), servletResponse);
+        } else {
+            filterChain.doFilter(servletRequest, servletResponse);
+        }
+    }
+
+    @Override
+    public void destroy() {
+        Filter.super.destroy();
+    }
+
+    @Slf4j
+    static class EncryptedRequest extends HttpServletRequestWrapper {
+
+        private final EncryptBodyConfig config;
+
+        public EncryptedRequest(ServletRequest request, EncryptBodyConfig config) {
+            super((HttpServletRequest) request);
+            this.config = config;
+        }
+
+
+        public String getParameter(String paramName) {
+            String value = super.getParameter(paramName);
+            if (StringUtils.isNotBlank(value)) {
+                try {
+                    AESEncryptUtil.decrypt(value, config.getAesKey());
+                } catch (Exception e) {
+                    log.error("解密失败", e);
+                }
+            }
+            return value;
+        }
+
+        public String[] getParameterValues(String paramName) {
+            String[] values = super.getParameterValues(paramName);
+            if (values != null) {
+                for (int index = 0; index < values.length; index++) {
+                    if (StringUtils.isNotBlank(values[index])) {
+                        try {
+                            values[index] = AESEncryptUtil.decrypt(values[index], config.getAesKey());
+                        } catch (Exception e) {
+                            log.error("解密失败", e);
+                        }
+                    }
+                }
+            }
+            return values;
+        }
+    }
+}

+ 0 - 44
src/main/java/com/izouma/jmrh/config/RedisConfig.java

@@ -1,44 +0,0 @@
-package com.izouma.jmrh.config;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-@Configuration
-@AutoConfigureAfter(RedisAutoConfiguration.class)
-@EnableRedisRepositories
-public class RedisConfig {
-
-    @Bean
-    RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
-
-        RedisTemplate<String, Object> template = new RedisTemplate<>();
-        template.setConnectionFactory(redisConnectionFactory);
-
-        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
-        Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class);
-
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        serializer.setObjectMapper(mapper);
-
-        template.setValueSerializer(serializer);
-        //使用StringRedisSerializer来序列化和反序列化redis的key值
-        template.setKeySerializer(new StringRedisSerializer());
-        template.setHashKeySerializer(new StringRedisSerializer());
-        template.setHashValueSerializer(serializer);
-        template.afterPropertiesSet();
-        return template;
-    }
-
-}

+ 23 - 0
src/main/java/com/izouma/jmrh/config/ThreadPoolTaskExecutorConfig.java

@@ -0,0 +1,23 @@
+package com.izouma.jmrh.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+
+@Configuration
+public class ThreadPoolTaskExecutorConfig {
+
+    @Bean
+    public Executor getAsyncExecutor() {
+
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setCorePoolSize(10);
+        executor.setMaxPoolSize(100);
+        executor.setQueueCapacity(500);
+        executor.setThreadNamePrefix("TIMCLL-");
+        executor.initialize();
+        return executor;
+    }
+}

+ 13 - 7
src/main/java/com/izouma/jmrh/config/WebMvcConfig.java

@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 import springfox.documentation.builders.ApiInfoBuilder;
@@ -12,6 +13,8 @@ import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
 
+import javax.annotation.Nonnull;
+
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
     @Value("${storage.local_path}")
@@ -30,11 +33,11 @@ public class WebMvcConfig implements WebMvcConfigurer {
     public Docket createApi() {
         return new Docket(DocumentationType.SWAGGER_2)
                 .apiInfo(new ApiInfoBuilder()
-                                 .title("接口文档")
-                                 .version("1.0.0")
-                                 .termsOfServiceUrl("#")
-                                 .description("接口文档")
-                                 .build())
+                        .title("接口文档")
+                        .version("1.0.0")
+                        .termsOfServiceUrl("#")
+                        .description("接口文档")
+                        .build())
                 .select()
                 .apis(RequestHandlerSelectors.basePackage("com.izouma.jmrh.web"))
                 .paths(PathSelectors.any())
@@ -66,10 +69,13 @@ public class WebMvcConfig implements WebMvcConfigurer {
     @Override
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
-                .allowedHeaders("*")
                 .allowCredentials(true)
-                .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH")
+                .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH", "OPTION")
+                .allowedOrigins("*")
                 .exposedHeaders("Content-Disposition,Content-Encrypted");
     }
 
+    @Override
+    public void addInterceptors(@Nonnull InterceptorRegistry registry) {
+    }
 }

+ 46 - 0
src/main/java/com/izouma/jmrh/converter/EncryptConverter.java

@@ -0,0 +1,46 @@
+package com.izouma.jmrh.converter;
+
+import cn.licoy.encryptbody.config.EncryptBodyConfig;
+import cn.licoy.encryptbody.util.AESEncryptUtil;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+
+import javax.persistence.AttributeConverter;
+import javax.persistence.Converter;
+
+@Converter
+@Slf4j
+public class EncryptConverter implements AttributeConverter<String, String> {
+
+    @Value("${encrypt.body.aes-key}")
+    private String key;
+
+    @Value("${encrypt.enable}")
+    private boolean enableEncrypt;
+
+    @Override
+    public String convertToDatabaseColumn(String s) {
+        if (StringUtils.isNotBlank(s) && enableEncrypt) {
+            try {
+                return AESEncryptUtil.encrypt(s, key);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return s;
+    }
+
+    @Override
+    public String convertToEntityAttribute(String s) {
+        if (StringUtils.isNotBlank(s) && enableEncrypt) {
+            try {
+                return AESEncryptUtil.decrypt(s, key);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return s;
+    }
+}

+ 11 - 4
src/main/java/com/izouma/jmrh/domain/OrgInfo.java

@@ -1,5 +1,6 @@
 package com.izouma.jmrh.domain;
 
+import com.izouma.jmrh.converter.EncryptConverter;
 import com.izouma.jmrh.enums.AuditStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,10 +9,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.Transient;
+import javax.persistence.*;
 import java.time.LocalDateTime;
 
 @Data
@@ -22,6 +20,7 @@ import java.time.LocalDateTime;
 @ApiModel("企业认证")
 public class OrgInfo extends BaseEntity {
     @ApiModelProperty("单位名称")
+    @Convert(converter = EncryptConverter.class)
     private String orgName;
 
     @ApiModelProperty("单位性质")
@@ -39,7 +38,11 @@ public class OrgInfo extends BaseEntity {
     @ApiModelProperty("所在地")
     private String address;
 
+    @ApiModelProperty("地理位置")
+    private String location;
+
     @ApiModelProperty("详细地址")
+    @Convert(converter = EncryptConverter.class)
     private String addressDetail;
 
     @ApiModelProperty("企业介绍")
@@ -55,18 +58,22 @@ public class OrgInfo extends BaseEntity {
     private String uscc;
 
     @ApiModelProperty("联系人")
+    @Convert(converter = EncryptConverter.class)
     private String contactName;
 
     @ApiModelProperty("身份证号")
+    @Convert(converter = EncryptConverter.class)
     private String contactIdNo;
 
     @ApiModelProperty("手机号")
+    @Convert(converter = EncryptConverter.class)
     private String contactPhone;
 
     @ApiModelProperty("电子邮箱")
     private String contactEmail;
 
     @ApiModelProperty("信息报送承诺书扫描件")
+    @Convert(converter = EncryptConverter.class)
     private String attach;
 
     @ApiModelProperty("用户ID")

+ 11 - 0
src/main/java/com/izouma/jmrh/domain/User.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.izouma.jmrh.annotations.Searchable;
 import com.izouma.jmrh.config.Constants;
+import com.izouma.jmrh.converter.EncryptConverter;
 import com.izouma.jmrh.security.Authority;
 import io.swagger.annotations.ApiModel;
 import lombok.AllArgsConstructor;
@@ -17,6 +18,7 @@ import javax.persistence.*;
 import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Size;
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -68,6 +70,7 @@ public class User extends BaseEntity implements Serializable {
     private String country;
 
     @Searchable
+    @Convert(converter = EncryptConverter.class)
     private String phone;
 
     @Column(unique = true)
@@ -78,14 +81,22 @@ public class User extends BaseEntity implements Serializable {
     private OrgInfo orgInfo;
 
     /*实名认证信息*/
+    @Convert(converter = EncryptConverter.class)
     private String contactName;
 
+    @Convert(converter = EncryptConverter.class)
     private String contactPhone;
 
+    @Convert(converter = EncryptConverter.class)
     private String idNo;
 
     private String occupation;
 
     private String orgName;
     /*实名认证信息*/
+
+    private LocalDateTime pwdUpdateAt;
+
+    @JsonIgnore
+    private String gAuthKey;
 }

+ 11 - 0
src/main/java/com/izouma/jmrh/dto/Captcha.java

@@ -0,0 +1,11 @@
+package com.izouma.jmrh.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class Captcha {
+    private String key;
+    private String image;
+}

+ 1 - 1
src/main/java/com/izouma/jmrh/SndExcelDTO.java → src/main/java/com/izouma/jmrh/dto/SndExcelDTO.java

@@ -1,4 +1,4 @@
-package com.izouma.jmrh;
+package com.izouma.jmrh.dto;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.izouma.jmrh.annotations.Searchable;

+ 14 - 1
src/main/java/com/izouma/jmrh/exception/GlobalExceptionHandler.java

@@ -1,5 +1,6 @@
 package com.izouma.jmrh.exception;
 
+import cn.licoy.encryptbody.exception.DecryptBodyFailException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpStatus;
 import org.springframework.transaction.TransactionSystemException;
@@ -60,7 +61,8 @@ public class GlobalExceptionHandler {
                 ConstraintViolationException violationException = (ConstraintViolationException) e.getCause()
                         .getCause();
                 message = violationException.getConstraintViolations().stream()
-                        .map(constraintViolation -> constraintViolation.getPropertyPath() + constraintViolation.getMessage())
+                        .map(constraintViolation -> constraintViolation.getPropertyPath() + constraintViolation
+                                .getMessage())
                         .collect(Collectors.joining(","));
                 log.error(message);
             }
@@ -146,4 +148,15 @@ public class GlobalExceptionHandler {
         log.error(e.getMessage());
         return map;
     }
+
+    @ExceptionHandler(value = DecryptBodyFailException.class)
+    @ResponseStatus(HttpStatus.BAD_REQUEST)
+    @ResponseBody
+    public Map<String, Object> decryptExceptionHandler(DecryptBodyFailException e) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("code", -1);
+        map.put("error", e.getMessage());
+        log.error("decryptExceptionHandler", e);
+        return map;
+    }
 }

+ 1 - 0
src/main/java/com/izouma/jmrh/security/WebSecurityConfig.java

@@ -102,6 +102,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/category/all").permitAll()
                 .antMatchers("/threshold/getOneThreshold").permitAll()
                 .antMatchers("/sysConfig/get/*").permitAll()
+                .antMatchers("/files/**").permitAll()
 
 
                 // all other requests need to be authenticated

+ 47 - 0
src/main/java/com/izouma/jmrh/service/CaptchaService.java

@@ -0,0 +1,47 @@
+package com.izouma.jmrh.service;
+
+import com.izouma.jmrh.dto.Captcha;
+import com.wf.captcha.SpecCaptcha;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.ehcache.UserManagedCache;
+import org.ehcache.config.builders.ExpiryPolicyBuilder;
+import org.ehcache.config.builders.UserManagedCacheBuilder;
+import org.springframework.stereotype.Service;
+
+import java.awt.*;
+import java.io.IOException;
+import java.time.Duration;
+import java.util.UUID;
+
+@Service
+@AllArgsConstructor
+public class CaptchaService {
+    private final UserManagedCache<String, String> captchaCache =
+            UserManagedCacheBuilder.newUserManagedCacheBuilder(String.class, String.class)
+                    .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofMinutes(10)))
+                    .build(true);
+
+    public Captcha gen() throws IOException, FontFormatException {
+        String key = UUID.randomUUID().toString();
+        SpecCaptcha specCaptcha = new SpecCaptcha(90 * 2, 32 * 2, 5);
+        specCaptcha.setFont(com.wf.captcha.base.Captcha.FONT_7, 24 * 2);
+        String code = specCaptcha.text().toLowerCase();
+        String image = specCaptcha.toBase64();
+        captchaCache.put(key, code);
+        return new Captcha(key, image);
+    }
+
+    public boolean verify(String key, String code) {
+        if (StringUtils.isBlank(key) || StringUtils.isBlank(code)) {
+            return false;
+        }
+        code = code.toLowerCase();
+        boolean verify = false;
+        String trueCode = captchaCache.get(key);
+        if (StringUtils.isNotBlank(trueCode) && trueCode.equals(code)) {
+            verify = true;
+        }
+        return verify;
+    }
+}

+ 34 - 0
src/main/java/com/izouma/jmrh/service/UserService.java

@@ -12,6 +12,8 @@ import com.izouma.jmrh.security.JwtTokenUtil;
 import com.izouma.jmrh.security.JwtUserFactory;
 import com.izouma.jmrh.service.sms.SmsService;
 import com.izouma.jmrh.service.storage.StorageService;
+import com.izouma.jmrh.utils.SecurityUtils;
+import com.warrenstrange.googleauth.GoogleAuthenticator;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
@@ -25,6 +27,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.*;
 
 @Service
@@ -38,6 +41,7 @@ public class UserService {
     private StorageService  storageService;
     private JwtTokenUtil    jwtTokenUtil;
     private MailCodeService mailCodeService;
+    private CaptchaService  captchaService;
 
     public User loginByPhone(String phone, String code, String password) {
         User user = userRepo.findByPhone(phone);
@@ -160,6 +164,7 @@ public class UserService {
     public String setPassword(Long userId, String password) {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         user.setPassword(new BCryptPasswordEncoder().encode(password));
+        user.setPwdUpdateAt(LocalDateTime.now());
         user = userRepo.save(user);
         return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
     }
@@ -205,6 +210,35 @@ public class UserService {
             throw new BusinessException("此邮箱未注册");
         }
         user.setPassword(new BCryptPasswordEncoder().encode(password));
+        user.setPwdUpdateAt(LocalDateTime.now());
         userRepo.save(user);
     }
+
+    public String setPasswordCaptcha(Long userId, String key, String code, String password) {
+        if (!captchaService.verify(key, code)) {
+            throw new BusinessException("验证码错误");
+        }
+        return setPassword(userId, password);
+    }
+
+    public void bindTFA(String password, String key, String code) {
+        if (!new BCryptPasswordEncoder().matches(password, SecurityUtils.getAuthenticatedUser().getPassword())) {
+            throw new BusinessException("密码错误");
+        }
+        GoogleAuthenticator gAuth = new GoogleAuthenticator();
+        if (!gAuth.authorize(key, Integer.parseInt(code))) {
+            throw new BusinessException("谷歌验证码错误");
+        }
+        User user = SecurityUtils.getAuthenticatedUser();
+        user.setGAuthKey(key);
+        userRepo.save(user);
+    }
+
+    public void verifyTAF(String code) {
+        GoogleAuthenticator gAuth = new GoogleAuthenticator();
+        String key = SecurityUtils.getAuthenticatedUser().getGAuthKey();
+        if (!gAuth.authorize(key, Integer.parseInt(code))) {
+            throw new BusinessException("谷歌验证码错误");
+        }
+    }
 }

+ 3 - 1
src/main/java/com/izouma/jmrh/service/storage/LocalStorageService.java

@@ -23,6 +23,8 @@ public class LocalStorageService implements StorageService {
 
     @Value("${storage.local_path}")
     private String localPath;
+    @Value("${storage.prefix}")
+    private String prefix;
 
     @Override
     public String uploadFromInputStream(InputStream fin, String path) {
@@ -58,6 +60,6 @@ public class LocalStorageService implements StorageService {
         } catch (IOException e) {
             e.printStackTrace();
         }
-        return "files" + "/" + path;
+        return "/files" + "/" + path;
     }
 }

+ 30 - 12
src/main/java/com/izouma/jmrh/web/AuthenticationController.java

@@ -1,10 +1,11 @@
 package com.izouma.jmrh.web;
 
+import cn.licoy.encryptbody.annotation.decrypt.DecryptBody;
+import cn.licoy.encryptbody.annotation.encrypt.DESEncryptBody;
 import cn.licoy.encryptbody.annotation.encrypt.EncryptBody;
+import cn.licoy.encryptbody.enums.DecryptBodyMethod;
 import cn.licoy.encryptbody.enums.EncryptBodyMethod;
-import com.izouma.jmrh.annotations.OperLog;
 import com.izouma.jmrh.domain.LoginLog;
-import com.izouma.jmrh.domain.MailCode;
 import com.izouma.jmrh.domain.User;
 import com.izouma.jmrh.exception.AuthenticationException;
 import com.izouma.jmrh.exception.BusinessException;
@@ -13,35 +14,32 @@ import com.izouma.jmrh.repo.UserRepo;
 import com.izouma.jmrh.security.JwtTokenUtil;
 import com.izouma.jmrh.security.JwtUserDetailsService;
 import com.izouma.jmrh.security.JwtUserFactory;
-import com.izouma.jmrh.service.LoginLogService;
 import com.izouma.jmrh.service.UserService;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.struts.chain.contexts.ActionContext;
-import org.springframework.http.HttpRequest;
+import org.springframework.cache.Cache;
+import org.springframework.cache.CacheManager;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.DisabledException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
 import java.time.LocalDateTime;
 import java.util.Objects;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 
 @Slf4j
 @AllArgsConstructor
 @RestController
 @RequestMapping("/auth")
 @EncryptBody(EncryptBodyMethod.AES)
+@DecryptBody(DecryptBodyMethod.AES)
 public class AuthenticationController {
     private AuthenticationManager authenticationManager;
     private JwtTokenUtil          jwtTokenUtil;
@@ -49,6 +47,9 @@ public class AuthenticationController {
     private UserService           userService;
     private LoginLogRepo          loginLogRepo;
     private UserRepo              userRepo;
+    private CacheManager          cacheManager;
+
+    private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
 
     @PostMapping("/registerByMail")
     public String registerByMail(@RequestParam String mail, @RequestParam String username, @RequestParam String password) {
@@ -58,6 +59,13 @@ public class AuthenticationController {
 
     @PostMapping("/loginByMail")
     public String loginByMail(String mail, String password) {
+        Cache loginCache = cacheManager.getCache("loginCache");
+        Cache userLockCache = cacheManager.getCache("userLockCache");
+        LocalDateTime lockTime = userLockCache.get(mail, LocalDateTime.class);
+        if (lockTime != null && LocalDateTime.now().isBefore(lockTime)) {
+            throw new BusinessException("密码错误超过3次,请十分钟后再试");
+        }
+
         try {
             User user = userRepo.findByEmail(mail);
             if (user == null) {
@@ -66,6 +74,7 @@ public class AuthenticationController {
             if (!new BCryptPasswordEncoder().matches(password, user.getPassword())) {
                 throw new AuthenticationException("", null);
             }
+
             return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
         } catch (Exception e) {
             log.error("loginByMail", e);
@@ -76,6 +85,15 @@ public class AuthenticationController {
                     .success(false)
                     .time(LocalDateTime.now())
                     .build());
+            loginCache.putIfAbsent(mail, Integer.valueOf(0));
+            loginCache.put(mail, loginCache.get(mail, Integer.class) + 1);
+            if (loginCache.get(mail, Integer.class) >= 3) {
+                userLockCache.put(mail, LocalDateTime.now().plusMinutes(10));
+            }
+            scheduler.schedule(() -> {
+                loginCache.putIfAbsent(mail, Integer.valueOf(0));
+                loginCache.put(mail, loginCache.get(mail, Integer.class) - 1);
+            }, 10, TimeUnit.MINUTES);
             throw new AuthenticationException("用户名或密码错误", e);
         }
     }

+ 3 - 0
src/main/java/com/izouma/jmrh/web/BaseController.java

@@ -1,6 +1,8 @@
 package com.izouma.jmrh.web;
 
+import cn.licoy.encryptbody.annotation.decrypt.DecryptBody;
 import cn.licoy.encryptbody.annotation.encrypt.EncryptBody;
+import cn.licoy.encryptbody.enums.DecryptBodyMethod;
 import cn.licoy.encryptbody.enums.EncryptBodyMethod;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.izouma.jmrh.annotations.Searchable;
@@ -27,6 +29,7 @@ import java.util.regex.Pattern;
 @SuppressWarnings("ALL")
 @Slf4j
 @EncryptBody(EncryptBodyMethod.AES)
+@DecryptBody(DecryptBodyMethod.AES)
 public class BaseController {
     public static PageRequest toPageRequest(PageQuery pageQuery) {
         PageRequest pageRequest;

+ 30 - 0
src/main/java/com/izouma/jmrh/web/CaptchaController.java

@@ -0,0 +1,30 @@
+package com.izouma.jmrh.web;
+
+import com.izouma.jmrh.dto.Captcha;
+import com.izouma.jmrh.service.CaptchaService;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.awt.*;
+import java.io.IOException;
+
+@RestController
+@RequestMapping("/captcha")
+@AllArgsConstructor
+public class CaptchaController {
+
+    private final CaptchaService captchaService;
+
+    @GetMapping("/get")
+    public Captcha get() throws IOException, FontFormatException {
+        return captchaService.gen();
+    }
+
+    @GetMapping("/verify")
+    public boolean verify(@RequestParam String key, @RequestParam String code) {
+        return captchaService.verify(key, code);
+    }
+}

+ 1 - 1
src/main/java/com/izouma/jmrh/web/FileUploadController.java

@@ -31,7 +31,7 @@ public class FileUploadController {
 
     @PostMapping("/file")
     public String uploadFile(@RequestParam("file") MultipartFile file,
-                             @RequestParam(value = "   ", required = false) String path) {
+                             @RequestParam(value = "path", required = false) String path) {
         if (path == null) {
             String basePath = "application";
             try {

+ 6 - 0
src/main/java/com/izouma/jmrh/web/OrgInfoController.java

@@ -1,5 +1,6 @@
 package com.izouma.jmrh.web;
 
+import cn.licoy.encryptbody.annotation.decrypt.AESDecryptBody;
 import com.izouma.jmrh.annotations.OperLog;
 import com.izouma.jmrh.domain.OrgInfo;
 import com.izouma.jmrh.domain.User;
@@ -115,5 +116,10 @@ public class OrgInfoController extends BaseController {
         orgInfo.setAuditTime(LocalDateTime.now());
         orgInfoRepo.save(orgInfo);
     }
+
+    @PostMapping("/saveAll")
+    public void saveAll() {
+        userRepo.saveAll(userRepo.findAll());
+    }
 }
 

+ 1 - 3
src/main/java/com/izouma/jmrh/web/ResourceSupplyAndDemandController.java

@@ -1,8 +1,6 @@
 package com.izouma.jmrh.web;
 
-import cn.licoy.encryptbody.annotation.encrypt.EncryptBody;
-import cn.licoy.encryptbody.enums.EncryptBodyMethod;
-import com.izouma.jmrh.SndExcelDTO;
+import com.izouma.jmrh.dto.SndExcelDTO;
 import com.izouma.jmrh.annotations.OperLog;
 import com.izouma.jmrh.domain.BaseEntity;
 import com.izouma.jmrh.domain.ResourceSupplyAndDemand;

+ 39 - 4
src/main/java/com/izouma/jmrh/web/UserController.java

@@ -14,9 +14,12 @@ import com.izouma.jmrh.service.sms.SmsService;
 import com.izouma.jmrh.utils.ObjUtils;
 import com.izouma.jmrh.utils.SecurityUtils;
 import com.izouma.jmrh.utils.excel.ExcelUtils;
+import com.warrenstrange.googleauth.GoogleAuthenticator;
+import com.warrenstrange.googleauth.GoogleAuthenticatorKey;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.authentication.AuthenticationManager;
@@ -28,9 +31,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 @AllArgsConstructor
 @RestController
@@ -145,7 +146,8 @@ public class UserController extends BaseController {
     @PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<User> all(PageQuery pageQuery) {
-        return userRepo.findAll(toSpecification(pageQuery, User.class), toPageRequest(pageQuery));
+        Page<User> all = userRepo.findAll(toSpecification(pageQuery, User.class), toPageRequest(pageQuery));
+        return all;
     }
 
     @PreAuthorize("hasRole('ADMIN')")
@@ -192,4 +194,37 @@ public class UserController extends BaseController {
                 contactPhone, email, idNo);
     }
 
+    @PostMapping("/changePassword")
+    public String changePassword(@RequestParam String password, @RequestParam String key, @RequestParam String code) {
+        return userService.setPasswordCaptcha(SecurityUtils.getAuthenticatedUser().getId(), key, code, password);
+    }
+
+    @GetMapping("/tfaStatus")
+    private Map<String, Object> tfaStatus() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("status", !StringUtils.isBlank(SecurityUtils.getAuthenticatedUser().getGAuthKey()));
+        return map;
+    }
+
+    @PostMapping("/getTFAKey")
+    public String getTFAKey() {
+        GoogleAuthenticator gAuth = new GoogleAuthenticator();
+        final GoogleAuthenticatorKey key = gAuth.createCredentials();
+        return key.getKey();
+    }
+
+    @PostMapping("/bindTFA")
+    public void bindTFA(@RequestParam String password, @RequestParam String key, @RequestParam String code) {
+        userService.bindTFA(password, key, code);
+    }
+
+    @PostMapping("/verifyTFA")
+    public void verifyTFA(@RequestParam String code) {
+        userService.verifyTAF(code);
+    }
+
+    @PostMapping("/saveAll")
+    public void saveAll() {
+        userRepo.saveAll(userRepo.findAll());
+    }
 }

+ 1 - 1
src/main/jmrh/.env.production

@@ -1 +1 @@
-VUE_APP_BASE_URL=http://jmrh.izouma.com/
+VUE_APP_BASE_URL=/

+ 1 - 0
src/main/jmrh/package.json

@@ -8,6 +8,7 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "@chenfengyuan/vue-qrcode": "^1.0.2",
     "@tinymce/tinymce-vue": "^3.2.2",
     "axios": "^0.21.1",
     "babel-polyfill": "^6.26.0",

+ 0 - 164
src/main/jmrh/public/未命名文件夹/未命名文件夹/icons/default/icons.js

@@ -1,164 +0,0 @@
-tinymce.IconManager.add('default', {
-  icons: {
-    'accessibility-check': '<svg width="24" height="24"><path d="M12 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 01-1-1v-5c0-.6-.4-1-1-1a1 1 0 00-1 1v5c0 .6-.4 1-1 1a1 1 0 01-1-1V9H4a1 1 0 110-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',
-    'action-next': '<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 00-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 10-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',
-    'action-prev': '<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 001.4-1.4L12 6.6l-7.7 7.7a1 1 0 001.4 1.4L12 9.4l6.3 6.3z"/></svg>',
-    'align-center': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'align-justify': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'align-left': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'align-none': '<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 110-2h9.2zm4 0h.8a1 1 0 010 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h6.8zm4 0H19a1 1 0 010 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h4.4zm4 0H19a1 1 0 010 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 010-2h2zm4 0h8a1 1 0 010 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',
-    'align-right': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'arrow-left': '<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 001.4-1V6a1 1 0 00-1.4-.9l-12 6a1 1 0 000 1.8z" fill-rule="evenodd"/></svg>',
-    'arrow-right': '<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 015 18V6a1 1 0 011.4-.9l12 6a1 1 0 010 1.8z" fill-rule="evenodd"/></svg>',
-    'bold': '<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 01-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',
-    'bookmark': '<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 00-1 1z" fill-rule="nonzero"/></svg>',
-    'border-width': '<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 010 2H5a1 1 0 010-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 110-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 01-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>',
-    'brightness': '<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 01-.7-.3A1 1 0 0111 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3h-1a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 01-.7.3H5a1 1 0 01-.7-.3A1 1 0 014 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 01-.8.3 1 1 0 01-.6-.3l-.8-.7a1 1 0 01-.3-.8c0-.2.1-.5.3-.7a1 1 0 011.4 0zm-10-7l-.7-.8a1 1 0 01-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.8-.3zm10 0a1 1 0 01-.8.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 010 1.4l-.8.8a1 1 0 01-.6.3 1 1 0 01-.8-.3 1 1 0 01-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 013.7 2.4 4 4 0 010 3.2A4 4 0 0112 16a4 4 0 01-3.7-2.4 4 4 0 010-3.2A4 4 0 0112 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',
-    'browse': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 11-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L13 13.4V20a1 1 0 01-2 0v-6.6z" fill-rule="nonzero"/></svg>',
-    'cancel': '<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 110 14.8 7.4 7.4 0 010-14.8zM12 3a9 9 0 100 18 9 9 0 000-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',
-    'change-case': '<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 01-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 01-1 .7h-.2a.7.7 0 01-.7-1l4-12a1 1 0 012 0l4 12a.7.7 0 01-.8 1h-.2a1 1 0 01-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',
-    'character-count': '<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 01-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 00-.5-.1 1 1 0 00-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 00-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 001.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 00-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 00-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 01-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 01-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',
-    'checklist-rtl': '<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',
-    'checklist': '<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8a1 1 0 010 2h-8a1 1 0 010-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',
-    'checkmark': '<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 011.6 1.2l-8 12a1 1 0 01-1.5.1l-5-5a1 1 0 111.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',
-    'chevron-down': '<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 010-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',
-    'chevron-left': '<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 010-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',
-    'chevron-right': '<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 010-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 010-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',
-    'chevron-up': '<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 010-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',
-    'close': '<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 01-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 01-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 011.5-1.5l3.8 3.9 3.8-3.9a1 1 0 011.5 1.5z" fill-rule="evenodd"/></svg>',
-    'code-sample': '<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 01-.8 2 2.8 2.8 0 01.8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 01-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 01.8-2 2.8 2.8 0 01-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 01-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 01-.5-.5V17a3 3 0 001-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',
-    'color-levels': '<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0118 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 01-3.7 3 5.7 5.7 0 01-3.2 0A5.9 5.9 0 017.6 18a6.2 6.2 0 01-1.4-2.6 6.7 6.7 0 010-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 012.3-4A20 20 0 0112 4a26.4 26.4 0 013.2 3.4 18.2 18.2 0 012.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 00-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 01-1.3 3 5.3 5.3 0 01-2.3 1.5 4.9 4.9 0 01-2 .1 4.3 4.3 0 002.4.8 4 4 0 002-.6 4 4 0 001.5-1.5z" fill-rule="evenodd"/></svg>',
-    'color-picker': '<svg width="24" height="24"><path d="M12 3a9 9 0 000 18 1.5 1.5 0 001.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 005-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z" fill-rule="nonzero"/></svg>',
-    'color-swatch-remove-color': '<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',
-    'color-swatch': '<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',
-    'comment-add': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 010 2h-2v2a1 1 0 01-2 0v-2H9a1 1 0 010-2h2V8a1 1 0 012 0v2z"/></g></svg>',
-    'comment': '<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/></svg>',
-    'contrast': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-6 8a6 6 0 006 6V6a6 6 0 00-6 6z" fill-rule="evenodd"/></svg>',
-    'copy': '<svg width="24" height="24"><path d="M16 3H6a2 2 0 00-2 2v11h2V5h10V3zm1 4a2 2 0 012 2v10a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',
-    'crop': '<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 01-1-1v-2H7V9H5a1 1 0 110-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',
-    'cut': '<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 010 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2 1.6 1.6 0 00-.8 0 2.6 2.6 0 00-.8.3 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3 2.8 2.8 0 001-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3 1.5 1.5 0 00-.8 0 1 1 0 00-.4.2 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4l.3.4.3.4a2.8 2.8 0 00.8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',
-    'document-properties': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',
-    'drag': '<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',
-    'duplicate': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7a2 2 0 012 2v2z"/><path d="M17 14h1a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1h-1a1 1 0 010-2h1v-1a1 1 0 012 0v1z"/></g></svg>',
-    'edit-block': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 00-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',
-    'edit-image': '<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 00-2-2H7v2h11v9zM6 17h15a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1H6a2 2 0 01-2-2V7H3a1 1 0 110-2h1V4a1 1 0 112 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',
-    'embed-page': '<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0119 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 008 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 00-4 4.5h2.2zm-3.4 0a12 12 0 012.8-4 12 12 0 00-5 4h2.2z" fill-rule="nonzero"/></svg>',
-    'embed': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 010 .8l-5.6 4A.5.5 0 019 16V8a.5.5 0 01.8-.4z" fill-rule="nonzero"/></svg>',
-    'emoji': '<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 100 16 8 8 0 000-16zm0 14.5a6.5 6.5 0 110-13 6.5 6.5 0 010 13z" fill-rule="nonzero"/></svg>',
-    'fill': '<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 002.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 002-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',
-    'flip-horizontally': '<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 00-2 2zm14-2v2h2a2 2 0 00-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 002-2h-2v2z" fill-rule="nonzero"/></svg>',
-    'flip-vertically': '<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 00-2 2v3h2V6h10v3h2V6a2 2 0 00-2-2zm2 14h-2v2a2 2 0 002-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',
-    'format-painter': '<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 00-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',
-    'format': '<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 010 2h-4v11a1 1 0 01-2 0V7H7a1 1 0 110-2h10z"/></svg>',
-    'fullscreen': '<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 110-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 11-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 111.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 110-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 110 1.7H5a.9.9 0 01-.9-.9v-4.4a.9.9 0 111.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 01-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 010 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',
-    'gallery': '<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 01-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 110-4 2 2 0 010 4zM4.5 4h15a.5.5 0 110 1h-15a.5.5 0 010-1zm2-2h11a.5.5 0 110 1h-11a.5.5 0 010-1z"/></svg>',
-    'gamma': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 00-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 01.6.5l.1.3a8.5 8.5 0 01.3.6l1.9 4.6 2-5.2a1 1 0 011-.6.5.5 0 01.5.6L13 14v2.8a.7.7 0 01-1.4 0z" fill-rule="nonzero"/></svg>',
-    'help': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 00-6 9 6.3 6.3 0 001.4 2l1 1a6.3 6.3 0 003.6 1 6.5 6.5 0 006-9 6.3 6.3 0 00-1.4-2l-1-1a6.3 6.3 0 00-3.6-1zM12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4z"/><path d="M9.6 9.7a.7.7 0 01-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 00-.8.8.8.8 0 01-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',
-    'highlight-bg-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 012.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',
-    'home': '<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',
-    'horizontal-rule': '<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',
-    'image-options': '<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',
-    'image': '<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 100-4 2 2 0 000 4z" fill-rule="nonzero"/></svg>',
-    'indent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',
-    'info': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',
-    'insert-character': '<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 001.8-2.9 6.3 6.3 0 00-.1-4.1 5.8 5.8 0 00-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 00-3.9 1.8 6.3 6.3 0 00-1.3 6 6.2 6.2 0 001.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 014 11c0-1 .2-1.9.6-2.7A7 7 0 016.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 015.7 2 7 7 0 011.7 2.3 6 6 0 01.2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 01-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',
-    'insert-time': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 100-14 7 7 0 000 14zm0 2a9 9 0 110-18 9 9 0 010 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 00-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',
-    'invert': '<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 01-3.1 1.9 6.1 6.1 0 01-5.5-1.6A5.8 5.8 0 016 14v-.3l.1-1.2A13.9 13.9 0 017.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 00.2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 00-3-4.2L12 6a26.1 26.1 0 00-2.2 2.5l-1-1a20.9 20.9 0 012.9-3.3L12 4l1 .8a22.2 22.2 0 014 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',
-    'italic': '<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',
-    'line': '<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',
-    'link': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2.1 2a2 2 0 102.7 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2-2a2 2 0 10-2.6-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',
-    'list-bull-circle': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 26a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 36a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
-    'list-bull-default': '<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
-    'list-bull-square': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
-    'list-num-default-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',
-    'list-num-default': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',
-    'list-num-lower-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-greek-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-greek': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',
-    'list-num-lower-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',
-    'list-num-upper-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-upper-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-upper-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',
-    'list-num-upper-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',
-    'lock': '<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 00-.3-.7A1 1 0 0013 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7z" fill-rule="evenodd"/></svg>',
-    'ltr': '<svg width="24" height="24"><path d="M11 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 017.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',
-    'more-drawer': '<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',
-    'new-document': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',
-    'new-tab': '<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',
-    'non-breaking': '<svg width="24" height="24"><path d="M11 11H8a1 1 0 110-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 01-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',
-    'notice': '<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',
-    'ordered-list-rtl': '<svg width="24" height="24"><path d="M6 17h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 110-2zm13-1v3.5a.5.5 0 11-1 0V5h-.5a.5.5 0 110-1H19zm-1 8.8l.2.2h1.3a.5.5 0 110 1h-1.6a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2h-1.3a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 010-1h1.2a.3.3 0 100-.6h-1.3a.4.4 0 110-.8h1.3a.3.3 0 000-.6h-1.2a.5.5 0 110-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',
-    'ordered-list': '<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 110-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 01-.5-.5V5h-.5a.5.5 0 010-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2H4.5a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 010-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 110-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 110-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',
-    'orientation': '<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 010-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 11-4.3 16.9l1.5-1.5A7 7 0 1013 6h-1z" fill-rule="nonzero"/></svg>',
-    'outdent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm1.6-3.8a1 1 0 01-1.2 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 011.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',
-    'page-break': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 01-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 01-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',
-    'paragraph': '<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z"/></svg>',
-    'paste-text': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',
-    'paste': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',
-    'permanent-pen': '<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 010-3L14 3l1 1-7.3 7.3a1 1 0 000 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 01-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',
-    'plus': '<svg width="24" height="24"><path d="M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 01.1 2H13v6a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H11V5c0-.6.4-1 1-1z"/></svg>',
-    'preferences': '<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 01-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 01-1.4 0l-1.5-1.2a6.2 6.2 0 01-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 01-1-.9l-.2-1.9a5.8 5.8 0 01-1.5-.6l-1.5 1.2a1 1 0 01-1.4 0l-.7-.7a1 1 0 010-1.4l1.2-1.5a6.2 6.2 0 01-.6-1.5l-1.9-.2a1 1 0 01-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 01.6-1.5L5.2 7.3a1 1 0 010-1.4l.7-.7a1 1 0 011.4 0l1.5 1.2a6.2 6.2 0 011.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 011.5.6l1.5-1.2a1 1 0 011.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 01.6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 100-6 3 3 0 000 6z" fill-rule="evenodd"/></svg>',
-    'preview': '<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 002.1-2.8 15.7 15.7 0 00-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 00-6.7 3.2A16.2 16.2 0 003.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 012.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 01-2.8-3.7 1 1 0 010-1zm12-3.3a2 2 0 102.7 2.6 4 4 0 11-2.6-2.6z" fill-rule="nonzero"/></svg>',
-    'print': '<svg width="24" height="24"><path d="M18 8H6a3 3 0 00-3 3v6h2v3h14v-3h2v-6a3 3 0 00-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',
-    'quote': '<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3z" fill-rule="nonzero"/></svg>',
-    'redo': '<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 11-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 111.4-1.4l5 5a1 1 0 010 1.4l-5 5a1 1 0 01-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',
-    'reload': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 011-1l5 .4a1 1 0 11-.2 2l-2.2-.2a7.8 7.8 0 008.4.2 7.5 7.5 0 003.5-6.4 1 1 0 112 0 9.5 9.5 0 01-4.5 8 9.9 9.9 0 01-10.2 0l.4 1.4a1 1 0 11-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 00-9.5-1 7.5 7.5 0 00-3.6 7 1 1 0 01-2 0 9.5 9.5 0 014.5-8.6 10 10 0 0110.9.3l-.3-1a1 1 0 012-.5l1.1 4.8a1 1 0 01-1 1.2l-5-.4a1 1 0 01-.9-1z"/></g></svg>',
-    'remove-formatting': '<svg width="24" height="24"><path d="M13.2 6a1 1 0 010 .2l-2.6 10a1 1 0 01-1 .8h-.2a.8.8 0 01-.8-1l2.6-10H8a1 1 0 110-2h9a1 1 0 010 2h-3.8zM5 18h7a1 1 0 010 2H5a1 1 0 010-2zm13 1.5L16.5 18 15 19.5a.7.7 0 01-1-1l1.5-1.5-1.5-1.5a.7.7 0 011-1l1.5 1.5 1.5-1.5a.7.7 0 011 1L17.5 17l1.5 1.5a.7.7 0 01-1 1z" fill-rule="evenodd"/></svg>',
-    'remove': '<svg width="24" height="24"><path d="M16 7h3a1 1 0 010 2h-1v9a3 3 0 01-3 3H9a3 3 0 01-3-3V9H5a1 1 0 110-2h3V6a3 3 0 013-3h2a3 3 0 013 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 00-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 012 0v4a1 1 0 01-2 0v-4zm4 0a1 1 0 012 0v4a1 1 0 01-2 0v-4z" fill-rule="nonzero"/></svg>',
-    'resize-handle': '<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 119 2l-7 7A.5.5 0 111 8l7-7zM8.1 5.1A.5.5 0 119 6l-3 3A.5.5 0 115 8l3-3z"/></g></svg>',
-    'resize': '<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-6a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3A1 1 0 014 11V5z" fill-rule="evenodd"/></svg>',
-    'restore-draft': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></g></svg>',
-    'rotate-left': '<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></svg>',
-    'rotate-right': '<svg width="24" height="24"><path d="M20 8V5a1 1 0 012 0v6c0 .6-.4 1-1 1h-6a1 1 0 010-2h4.3L16 7A7.2 7.2 0 007.7 6a7 7 0 003 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 011.4 1.5A9.2 9.2 0 012.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',
-    'rtl': '<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 014.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L8 5zm12 11.2a1 1 0 11-1 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 111 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',
-    'save': '<svg width="24" height="24"><path d="M5 16h14a2 2 0 012 2v2a2 2 0 01-2 2H5a2 2 0 01-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 10-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 10-1.4-1.4L13 11.6V4a1 1 0 00-2 0v7.6z" fill-rule="nonzero"/></svg>',
-    'search': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12z" fill-rule="nonzero"/></svg>',
-    'select-all': '<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 00-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 00-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 002-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',
-    'selected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 00-1 1L9.6 17 18 8.6a.7.7 0 000-1 .7.7 0 00-1 0l-7.4 7.3z"/></svg>',
-    'settings': '<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V8H5a1 1 0 110-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V13H5a1 1 0 010-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V18H5a1 1 0 010-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',
-    'sharpen': '<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',
-    'sort-asc': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M4 8h5a1 1 0 110 2H4a1 1 0 110-2zm0 8h8a1 1 0 010 2H4a1 1 0 010-2zm0-4h7a1 1 0 010 2H4a1 1 0 010-2z"/><path fill-rule="nonzero" d="M16 8.4l-2.3 2.3a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L18 8.4V18a1 1 0 01-2 0V8.4z"/></g></svg>',
-    'sort-dsc': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M4 16h5a1 1 0 000-2H4a1 1 0 000 2zm0-8h8a1 1 0 000-2H4a1 1 0 100 2zm0 4h7a1 1 0 000-2H4a1 1 0 000 2z"/><path fill-rule="nonzero" d="M16 15.6l-2.3-2.3a1 1 0 00-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 00-1.4-1.4L18 15.6V6a1 1 0 00-2 0v9.6z"/></g></svg>',
-    'sourcecode': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 010-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 00-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',
-    'spell-check': '<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 01-.7-.3 1 1 0 01-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',
-    'strike-through': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 017 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 010 2H5a1 1 0 010-2z" fill-rule="nonzero"/></g></svg>',
-    'subscript': '<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 00-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 01-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',
-    'superscript': '<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',
-    'table-cell-properties': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',
-    'table-cell-select-all': '<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z" opacity=".2"/></g></svg>',
-    'table-cell-select-inner': '<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z" opacity=".2"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z"/></g></svg>',
-    'table-delete-column': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5l1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',
-    'table-delete-row': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8l1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',
-    'table-delete-table': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="M14.4 8.6l1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></g></svg>',
-    'table-insert-column-after': '<svg width="24" height="24"><path fill-rule="nonzero" d="M20 4c.6 0 1 .4 1 1v2a1 1 0 01-2 0V6h-8v12h8v-1a1 1 0 012 0v2c0 .5-.4 1-.9 1H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H17v2a1 1 0 01-2 .1V13h-2a1 1 0 01-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',
-    'table-insert-column-before': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H4a1 1 0 01-1-1v-2a1 1 0 012 0v1h8V6H5v1a1 1 0 11-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H9v2a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',
-    'table-insert-row-above': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4a1 1 0 110 2H5v6h14V6h-1a1 1 0 010-2h2c.6 0 1 .4 1 1v13a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 010 2h-2v2a1 1 0 01-2 .1V8H9a1 1 0 010-2h2V4c0-.6.4-1 1-1z"/></svg>',
-    'table-insert-row-after': '<svg width="24" height="24"><path fill-rule="nonzero" d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 01.1 2H13v2a1 1 0 01-2 .1V18H9a1 1 0 01-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 010-2h1v-6H5v6h1a1 1 0 010 2H4a1 1 0 01-1-1V6c0-1.1.9-2 2-2h14a2 2 0 012 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',
-    'table-left-header': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 9h-4v5h4v-5zm-6 0H9v5h4v-5zm0-7H9v5h4V6zm6 0h-4v5h4V6z"/></svg>',
-    'table-merge-cells': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15.5V18h3v-2.5H5zm14-5h-9V18h9v-7.5zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6zm-8 7.5h3v-3H5v3z"/></svg>',
-    'table-row-properties': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',
-    'table-split-cells': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1l1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',
-    'table-top-header': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 11H5v3h6v-3zm8 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></svg>',
-    'table': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 14v4h6v-4H5zm14 0h-6v4h6v-4zm0-6h-6v4h6V8zM5 12h6V8H5v4z"/></svg>',
-    'template': '<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 116 0v4h4a2 2 0 012 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 10-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',
-    'temporary-placeholder': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 111 0V6H15v1.6a8 8 0 11-6 0zm-2.6 5.3a.5.5 0 00.3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 013.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 00-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',
-    'text-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',
-    'toc': '<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'translate': '<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 010-1l3.1-3A12.4 12.4 0 016.7 9H8a10.1 10.1 0 001.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 110-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 01-1 2.4 13.5 13.5 0 01-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 01-.4.7 1 1 0 01-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 01-1 .7.5.5 0 01-.4-.7l2.7-7.4a1 1 0 012 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',
-    'underline': '<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 01-.4 1.8l-1 1.4a5.3 5.3 0 01-5.5 1 5 5 0 01-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 01-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 002.2.8 3.4 3.4 0 002.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'undo': '<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 01-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 11-1.4 1.4l-5-5a1 1 0 010-1.4l5-5a1 1 0 011.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',
-    'unlink': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2 2a2 2 0 102.6 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2.1-2a2 2 0 10-2.7-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2zM7.6 6.3a.8.8 0 01-1 1.1L3.3 4.2a.7.7 0 111-1l3.2 3.1zM5.1 8.6a.8.8 0 010 1.5H3a.8.8 0 010-1.5H5zm5-3.5a.8.8 0 01-1.5 0V3a.8.8 0 011.5 0V5zm6 11.8a.8.8 0 011-1l3.2 3.2a.8.8 0 01-1 1L16 17zm-2.2 2a.8.8 0 011.5 0V21a.8.8 0 01-1.5 0V19zm5-3.5a.7.7 0 110-1.5H21a.8.8 0 010 1.5H19z" fill-rule="nonzero"/></svg>',
-    'unlock': '<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 00-.3-.7A1 1 0 0016 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',
-    'unordered-list': '<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',
-    'unselected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 00-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',
-    'upload': '<svg width="24" height="24"><path d="M18 19v-2a1 1 0 012 0v3c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-3a1 1 0 012 0v2h12zM11 6.4L8.7 8.7a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L13 6.4V16a1 1 0 01-2 0V6.4z" fill-rule="nonzero"/></svg>',
-    'user': '<svg width="24" height="24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm-8.7-5.3a11 11 0 0017.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',
-    'visualblocks': '<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 01-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 01-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 010 2v7a1 1 0 01-2 0V9h-1v7a1 1 0 01-2 0v-4a2.5 2.5 0 01-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 012 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',
-    'visualchars': '<svg width="24" height="24"><path d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z" fill-rule="evenodd"/></svg>',
-    'warning': '<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',
-    'zoom-in': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-1-9a1 1 0 012 0v6a1 1 0 01-2 0V8zm-2 4a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',
-    'zoom-out': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-3-5a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',
-  }
-});

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/main/jmrh/public/未命名文件夹/未命名文件夹/icons/default/icons.min.js


+ 0 - 7
src/main/jmrh/public/未命名文件夹/未命名文件夹/icons/default/index.js

@@ -1,7 +0,0 @@
-// Exports the "default" icons for usage with module loaders
-// Usage:
-//   CommonJS:
-//     require('tinymce/icons/default')
-//   ES2015:
-//     import 'tinymce/icons/default'
-require('./icons.js');

+ 0 - 59
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/dark/content.css

@@ -1,59 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body {
-  background-color: #2f3742;
-  color: #dfe0e4;
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-  line-height: 1.4;
-  margin: 1rem;
-}
-a {
-  color: #4099ff;
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #6d737b;
-  padding: 0.4rem;
-}
-figure {
-  display: table;
-  margin: 1rem auto;
-}
-figure figcaption {
-  color: #8a8f97;
-  display: block;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #6d737b;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-code {
-  background-color: #6d737b;
-  border-radius: 3px;
-  padding: 0.1rem 0.2rem;
-}
-/* Make text in selected cells in tables dark and readable */
-td[data-mce-selected],
-th[data-mce-selected] {
-  color: #333;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #6d737b;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #6d737b;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

+ 0 - 7
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/dark/content.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}

+ 0 - 49
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/default/content.css

@@ -1,49 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-  line-height: 1.4;
-  margin: 1rem;
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #ccc;
-  padding: 0.4rem;
-}
-figure {
-  display: table;
-  margin: 1rem auto;
-}
-figure figcaption {
-  color: #999;
-  display: block;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #ccc;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-code {
-  background-color: #e8e8e8;
-  border-radius: 3px;
-  padding: 0.1rem 0.2rem;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #ccc;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #ccc;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

+ 0 - 7
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/default/content.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

+ 0 - 54
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/document/content.css

@@ -1,54 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-@media screen {
-  html {
-    background: #f4f4f4;
-    min-height: 100%;
-  }
-}
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-}
-@media screen {
-  body {
-    background-color: #fff;
-    box-shadow: 0 0 4px rgba(0, 0, 0, 0.15);
-    box-sizing: border-box;
-    margin: 1rem auto 0;
-    max-width: 820px;
-    min-height: calc(100vh - 1rem);
-    padding: 4rem 6rem 6rem 6rem;
-  }
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #ccc;
-  padding: 0.4rem;
-}
-figure figcaption {
-  color: #999;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #ccc;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #ccc;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #ccc;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

+ 0 - 7
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/document/content.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

+ 0 - 50
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/writer/content.css

@@ -1,50 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-  line-height: 1.4;
-  margin: 1rem auto;
-  max-width: 900px;
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #ccc;
-  padding: 0.4rem;
-}
-figure {
-  display: table;
-  margin: 1rem auto;
-}
-figure figcaption {
-  color: #999;
-  display: block;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #ccc;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-code {
-  background-color: #e8e8e8;
-  border-radius: 3px;
-  padding: 0.1rem 0.2rem;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #ccc;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #ccc;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

+ 0 - 7
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/content/writer/content.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

+ 0 - 677
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.css

@@ -1,677 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  cursor: default;
-  display: inline-block;
-  height: 12px !important;
-  padding: 0 2px;
-  -webkit-user-modify: read-only;
-  -moz-user-modify: read-only;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-      user-select: all;
-  width: 8px !important;
-}
-.mce-content-body .mce-item-anchor[data-mce-selected] {
-  outline-offset: 1px;
-}
-.tox-comments-visible .tox-comment {
-  background-color: #fff0b7;
-}
-.tox-comments-visible .tox-comment--active {
-  background-color: #ffe168;
-}
-.tox-checklist > li:not(.tox-checklist--hidden) {
-  list-style: none;
-  margin: 0.25em 0;
-}
-.tox-checklist > li:not(.tox-checklist--hidden)::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-  background-size: 100%;
-  content: '';
-  cursor: pointer;
-  height: 1em;
-  margin-left: -1.5em;
-  margin-top: 0.125em;
-  position: absolute;
-  width: 1em;
-}
-.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-}
-[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
-  margin-left: 0;
-  margin-right: -1.5em;
-}
-/* stylelint-disable */
-/* http://prismjs.com/ */
-/**
- * Dracula Theme originally by Zeno Rocha [@zenorocha]
- * https://draculatheme.com/
- *
- * Ported for PrismJS by Albert Vallverdu [@byverdu]
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: #f8f8f2;
-  background: none;
-  text-shadow: 0 1px rgba(0, 0, 0, 0.3);
-  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.5;
-  -moz-tab-size: 4;
-  tab-size: 4;
-  -webkit-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-/* Code blocks */
-pre[class*="language-"] {
-  padding: 1em;
-  margin: 0.5em 0;
-  overflow: auto;
-  border-radius: 0.3em;
-}
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-  background: #282a36;
-}
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: 0.1em;
-  border-radius: 0.3em;
-  white-space: normal;
-}
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-  color: #6272a4;
-}
-.token.punctuation {
-  color: #f8f8f2;
-}
-.namespace {
-  opacity: 0.7;
-}
-.token.property,
-.token.tag,
-.token.constant,
-.token.symbol,
-.token.deleted {
-  color: #ff79c6;
-}
-.token.boolean,
-.token.number {
-  color: #bd93f9;
-}
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-  color: #50fa7b;
-}
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string,
-.token.variable {
-  color: #f8f8f2;
-}
-.token.atrule,
-.token.attr-value,
-.token.function,
-.token.class-name {
-  color: #f1fa8c;
-}
-.token.keyword {
-  color: #8be9fd;
-}
-.token.regex,
-.token.important {
-  color: #ffb86c;
-}
-.token.important,
-.token.bold {
-  font-weight: bold;
-}
-.token.italic {
-  font-style: italic;
-}
-.token.entity {
-  cursor: help;
-}
-/* stylelint-enable */
-.mce-content-body {
-  overflow-wrap: break-word;
-  word-wrap: break-word;
-}
-.mce-content-body .mce-visual-caret {
-  background-color: black;
-  background-color: currentColor;
-  position: absolute;
-}
-.mce-content-body .mce-visual-caret-hidden {
-  display: none;
-}
-.mce-content-body *[data-mce-caret] {
-  left: -1000px;
-  margin: 0;
-  padding: 0;
-  position: absolute;
-  right: auto;
-  top: 0;
-}
-.mce-content-body .mce-offscreen-selection {
-  left: -2000000px;
-  max-width: 1000000px;
-  position: absolute;
-}
-.mce-content-body *[contentEditable=false] {
-  cursor: default;
-}
-.mce-content-body *[contentEditable=true] {
-  cursor: text;
-}
-.tox-cursor-format-painter {
-  cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
-}
-.mce-content-body figure.align-left {
-  float: left;
-}
-.mce-content-body figure.align-right {
-  float: right;
-}
-.mce-content-body figure.image.align-center {
-  display: table;
-  margin-left: auto;
-  margin-right: auto;
-}
-.mce-preview-object {
-  border: 1px solid gray;
-  display: inline-block;
-  line-height: 0;
-  margin: 0 2px 0 2px;
-  position: relative;
-}
-.mce-preview-object .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-preview-object[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.mce-object {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  border: 1px dashed #aaa;
-}
-.mce-pagebreak {
-  border: 1px dashed #aaa;
-  cursor: default;
-  display: block;
-  height: 5px;
-  margin-top: 15px;
-  page-break-before: always;
-  width: 100%;
-}
-@media print {
-  .mce-pagebreak {
-    border: 0;
-  }
-}
-.tiny-pageembed .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tiny-pageembed[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.tiny-pageembed {
-  display: inline-block;
-  position: relative;
-}
-.tiny-pageembed--21by9,
-.tiny-pageembed--16by9,
-.tiny-pageembed--4by3,
-.tiny-pageembed--1by1 {
-  display: block;
-  overflow: hidden;
-  padding: 0;
-  position: relative;
-  width: 100%;
-}
-.tiny-pageembed--21by9 {
-  padding-top: 42.857143%;
-}
-.tiny-pageembed--16by9 {
-  padding-top: 56.25%;
-}
-.tiny-pageembed--4by3 {
-  padding-top: 75%;
-}
-.tiny-pageembed--1by1 {
-  padding-top: 100%;
-}
-.tiny-pageembed--21by9 iframe,
-.tiny-pageembed--16by9 iframe,
-.tiny-pageembed--4by3 iframe,
-.tiny-pageembed--1by1 iframe {
-  border: 0;
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-content-body[data-mce-placeholder] {
-  position: relative;
-}
-.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  color: rgba(34, 47, 62, 0.7);
-  content: attr(data-mce-placeholder);
-  position: absolute;
-}
-.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  left: 1px;
-}
-.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
-  right: 1px;
-}
-.mce-content-body div.mce-resizehandle {
-  background-color: #4099ff;
-  border-color: #4099ff;
-  border-style: solid;
-  border-width: 1px;
-  box-sizing: border-box;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-  z-index: 10000;
-}
-.mce-content-body div.mce-resizehandle:hover {
-  background-color: #4099ff;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(1) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(2) {
-  cursor: nesw-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(3) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(4) {
-  cursor: nesw-resize;
-}
-.mce-content-body .mce-clonedresizable {
-  opacity: 0.5;
-  outline: 1px dashed black;
-  position: absolute;
-  z-index: 10000;
-}
-.mce-content-body .mce-resize-helper {
-  background: #555;
-  background: rgba(0, 0, 0, 0.75);
-  border: 1px;
-  border-radius: 3px;
-  color: white;
-  display: none;
-  font-family: sans-serif;
-  font-size: 12px;
-  line-height: 14px;
-  margin: 5px 10px;
-  padding: 5px;
-  position: absolute;
-  white-space: nowrap;
-  z-index: 10001;
-}
-.tox-rtc-user-selection {
-  position: relative;
-}
-.tox-rtc-user-cursor {
-  bottom: 0;
-  cursor: default;
-  position: absolute;
-  top: 0;
-  width: 2px;
-}
-.tox-rtc-user-cursor::before {
-  background-color: inherit;
-  border-radius: 50%;
-  content: '';
-  display: block;
-  height: 8px;
-  position: absolute;
-  right: -3px;
-  top: -3px;
-  width: 8px;
-}
-.tox-rtc-user-cursor:hover::after {
-  background-color: inherit;
-  border-radius: 100px;
-  box-sizing: border-box;
-  color: #fff;
-  content: attr(data-user);
-  display: block;
-  font-size: 12px;
-  font-weight: bold;
-  left: -5px;
-  min-height: 8px;
-  min-width: 8px;
-  padding: 0 12px;
-  position: absolute;
-  top: -11px;
-  white-space: nowrap;
-  z-index: 1000;
-}
-.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
-  background-color: #2dc26b;
-}
-.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
-  background-color: #e03e2d;
-}
-.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
-  background-color: #f1c40f;
-}
-.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
-  background-color: #3598db;
-}
-.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
-  background-color: #b96ad9;
-}
-.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
-  background-color: #e67e23;
-}
-.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
-  background-color: #aaa69d;
-}
-.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
-  background-color: #f368e0;
-}
-.tox-rtc-remote-image {
-  background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
-  border: 1px solid #ccc;
-  min-height: 240px;
-  min-width: 320px;
-}
-.mce-match-marker {
-  background: #aaa;
-  color: #fff;
-}
-.mce-match-marker-selected {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::-moz-selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-content-body img[data-mce-selected],
-.mce-content-body table[data-mce-selected] {
-  outline: 3px solid #4099ff;
-}
-.mce-content-body hr[data-mce-selected] {
-  outline: 3px solid #4099ff;
-  outline-offset: 1px;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
-  outline: 3px solid #4099ff;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
-  outline: 3px solid #4099ff;
-}
-.mce-content-body *[contentEditable=false][data-mce-selected] {
-  cursor: not-allowed;
-  outline: 3px solid #4099ff;
-}
-.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
-.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
-  outline: none;
-}
-.mce-content-body *[data-mce-selected="inline-boundary"] {
-  background-color: #4099ff;
-}
-.mce-content-body .mce-edit-focus {
-  outline: 3px solid #4099ff;
-}
-.mce-content-body td[data-mce-selected],
-.mce-content-body th[data-mce-selected] {
-  background-color: #b4d7ff !important;
-}
-.mce-content-body td[data-mce-selected]::-moz-selection,
-.mce-content-body th[data-mce-selected]::-moz-selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected]::selection,
-.mce-content-body th[data-mce-selected]::selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected] *,
-.mce-content-body th[data-mce-selected] * {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.mce-content-body img::-moz-selection {
-  background: none;
-}
-.mce-content-body img::selection {
-  background: none;
-}
-.ephox-snooker-resizer-bar {
-  background-color: #4099ff;
-  opacity: 0;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.ephox-snooker-resizer-cols {
-  cursor: col-resize;
-}
-.ephox-snooker-resizer-rows {
-  cursor: row-resize;
-}
-.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
-  opacity: 1;
-}
-.mce-spellchecker-word {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-  height: 2rem;
-}
-.mce-spellchecker-grammar {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-}
-.mce-toc {
-  border: 1px solid gray;
-}
-.mce-toc h2 {
-  margin: 4px;
-}
-.mce-toc li {
-  list-style-type: none;
-}
-.mce-item-table,
-.mce-item-table td,
-.mce-item-table th,
-.mce-item-table caption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks p,
-.mce-visualblocks h1,
-.mce-visualblocks h2,
-.mce-visualblocks h3,
-.mce-visualblocks h4,
-.mce-visualblocks h5,
-.mce-visualblocks h6,
-.mce-visualblocks div:not([data-mce-bogus]),
-.mce-visualblocks section,
-.mce-visualblocks article,
-.mce-visualblocks blockquote,
-.mce-visualblocks address,
-.mce-visualblocks pre,
-.mce-visualblocks figure,
-.mce-visualblocks figcaption,
-.mce-visualblocks hgroup,
-.mce-visualblocks aside,
-.mce-visualblocks ul,
-.mce-visualblocks ol,
-.mce-visualblocks dl {
-  background-repeat: no-repeat;
-  border: 1px dashed #bbb;
-  margin-left: 3px;
-  padding-top: 10px;
-}
-.mce-visualblocks p {
-  background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
-}
-.mce-visualblocks h1 {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
-}
-.mce-visualblocks h2 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
-}
-.mce-visualblocks h3 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
-}
-.mce-visualblocks h4 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
-}
-.mce-visualblocks h5 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
-}
-.mce-visualblocks h6 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
-}
-.mce-visualblocks div:not([data-mce-bogus]) {
-  background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
-}
-.mce-visualblocks section {
-  background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
-}
-.mce-visualblocks article {
-  background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
-}
-.mce-visualblocks blockquote {
-  background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
-}
-.mce-visualblocks address {
-  background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
-}
-.mce-visualblocks pre {
-  background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
-}
-.mce-visualblocks figure {
-  background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
-}
-.mce-visualblocks figcaption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks hgroup {
-  background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
-}
-.mce-visualblocks aside {
-  background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
-}
-.mce-visualblocks ul {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
-}
-.mce-visualblocks ol {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
-}
-.mce-visualblocks dl {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
-}
-.mce-visualblocks:not([dir=rtl]) p,
-.mce-visualblocks:not([dir=rtl]) h1,
-.mce-visualblocks:not([dir=rtl]) h2,
-.mce-visualblocks:not([dir=rtl]) h3,
-.mce-visualblocks:not([dir=rtl]) h4,
-.mce-visualblocks:not([dir=rtl]) h5,
-.mce-visualblocks:not([dir=rtl]) h6,
-.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
-.mce-visualblocks:not([dir=rtl]) section,
-.mce-visualblocks:not([dir=rtl]) article,
-.mce-visualblocks:not([dir=rtl]) blockquote,
-.mce-visualblocks:not([dir=rtl]) address,
-.mce-visualblocks:not([dir=rtl]) pre,
-.mce-visualblocks:not([dir=rtl]) figure,
-.mce-visualblocks:not([dir=rtl]) figcaption,
-.mce-visualblocks:not([dir=rtl]) hgroup,
-.mce-visualblocks:not([dir=rtl]) aside,
-.mce-visualblocks:not([dir=rtl]) ul,
-.mce-visualblocks:not([dir=rtl]) ol,
-.mce-visualblocks:not([dir=rtl]) dl {
-  margin-left: 3px;
-}
-.mce-visualblocks[dir=rtl] p,
-.mce-visualblocks[dir=rtl] h1,
-.mce-visualblocks[dir=rtl] h2,
-.mce-visualblocks[dir=rtl] h3,
-.mce-visualblocks[dir=rtl] h4,
-.mce-visualblocks[dir=rtl] h5,
-.mce-visualblocks[dir=rtl] h6,
-.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
-.mce-visualblocks[dir=rtl] section,
-.mce-visualblocks[dir=rtl] article,
-.mce-visualblocks[dir=rtl] blockquote,
-.mce-visualblocks[dir=rtl] address,
-.mce-visualblocks[dir=rtl] pre,
-.mce-visualblocks[dir=rtl] figure,
-.mce-visualblocks[dir=rtl] figcaption,
-.mce-visualblocks[dir=rtl] hgroup,
-.mce-visualblocks[dir=rtl] aside,
-.mce-visualblocks[dir=rtl] ul,
-.mce-visualblocks[dir=rtl] ol,
-.mce-visualblocks[dir=rtl] dl {
-  background-position-x: right;
-  margin-right: 3px;
-}
-.mce-nbsp,
-.mce-shy {
-  background: #aaa;
-}
-.mce-shy::after {
-  content: '-';
-}
-body {
-  font-family: sans-serif;
-}
-table {
-  border-collapse: collapse;
-}

+ 0 - 689
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.inline.css

@@ -1,689 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  cursor: default;
-  display: inline-block;
-  height: 12px !important;
-  padding: 0 2px;
-  -webkit-user-modify: read-only;
-  -moz-user-modify: read-only;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-      user-select: all;
-  width: 8px !important;
-}
-.mce-content-body .mce-item-anchor[data-mce-selected] {
-  outline-offset: 1px;
-}
-.tox-comments-visible .tox-comment {
-  background-color: #fff0b7;
-}
-.tox-comments-visible .tox-comment--active {
-  background-color: #ffe168;
-}
-.tox-checklist > li:not(.tox-checklist--hidden) {
-  list-style: none;
-  margin: 0.25em 0;
-}
-.tox-checklist > li:not(.tox-checklist--hidden)::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-  background-size: 100%;
-  content: '';
-  cursor: pointer;
-  height: 1em;
-  margin-left: -1.5em;
-  margin-top: 0.125em;
-  position: absolute;
-  width: 1em;
-}
-.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-}
-[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
-  margin-left: 0;
-  margin-right: -1.5em;
-}
-/* stylelint-disable */
-/* http://prismjs.com/ */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: black;
-  background: none;
-  text-shadow: 0 1px white;
-  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-  font-size: 1em;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.5;
-  -moz-tab-size: 4;
-  tab-size: 4;
-  -webkit-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-pre[class*="language-"]::-moz-selection,
-pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection,
-code[class*="language-"] ::-moz-selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-pre[class*="language-"]::selection,
-pre[class*="language-"] ::selection,
-code[class*="language-"]::selection,
-code[class*="language-"] ::selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-@media print {
-  code[class*="language-"],
-  pre[class*="language-"] {
-    text-shadow: none;
-  }
-}
-/* Code blocks */
-pre[class*="language-"] {
-  padding: 1em;
-  margin: 0.5em 0;
-  overflow: auto;
-}
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-  background: #f5f2f0;
-}
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: 0.1em;
-  border-radius: 0.3em;
-  white-space: normal;
-}
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-  color: slategray;
-}
-.token.punctuation {
-  color: #999;
-}
-.namespace {
-  opacity: 0.7;
-}
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-  color: #905;
-}
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-  color: #690;
-}
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-  color: #9a6e3a;
-  background: hsla(0, 0%, 100%, 0.5);
-}
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-  color: #07a;
-}
-.token.function,
-.token.class-name {
-  color: #DD4A68;
-}
-.token.regex,
-.token.important,
-.token.variable {
-  color: #e90;
-}
-.token.important,
-.token.bold {
-  font-weight: bold;
-}
-.token.italic {
-  font-style: italic;
-}
-.token.entity {
-  cursor: help;
-}
-/* stylelint-enable */
-.mce-content-body {
-  overflow-wrap: break-word;
-  word-wrap: break-word;
-}
-.mce-content-body .mce-visual-caret {
-  background-color: black;
-  background-color: currentColor;
-  position: absolute;
-}
-.mce-content-body .mce-visual-caret-hidden {
-  display: none;
-}
-.mce-content-body *[data-mce-caret] {
-  left: -1000px;
-  margin: 0;
-  padding: 0;
-  position: absolute;
-  right: auto;
-  top: 0;
-}
-.mce-content-body .mce-offscreen-selection {
-  left: -2000000px;
-  max-width: 1000000px;
-  position: absolute;
-}
-.mce-content-body *[contentEditable=false] {
-  cursor: default;
-}
-.mce-content-body *[contentEditable=true] {
-  cursor: text;
-}
-.tox-cursor-format-painter {
-  cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
-}
-.mce-content-body figure.align-left {
-  float: left;
-}
-.mce-content-body figure.align-right {
-  float: right;
-}
-.mce-content-body figure.image.align-center {
-  display: table;
-  margin-left: auto;
-  margin-right: auto;
-}
-.mce-preview-object {
-  border: 1px solid gray;
-  display: inline-block;
-  line-height: 0;
-  margin: 0 2px 0 2px;
-  position: relative;
-}
-.mce-preview-object .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-preview-object[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.mce-object {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  border: 1px dashed #aaa;
-}
-.mce-pagebreak {
-  border: 1px dashed #aaa;
-  cursor: default;
-  display: block;
-  height: 5px;
-  margin-top: 15px;
-  page-break-before: always;
-  width: 100%;
-}
-@media print {
-  .mce-pagebreak {
-    border: 0;
-  }
-}
-.tiny-pageembed .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tiny-pageembed[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.tiny-pageembed {
-  display: inline-block;
-  position: relative;
-}
-.tiny-pageembed--21by9,
-.tiny-pageembed--16by9,
-.tiny-pageembed--4by3,
-.tiny-pageembed--1by1 {
-  display: block;
-  overflow: hidden;
-  padding: 0;
-  position: relative;
-  width: 100%;
-}
-.tiny-pageembed--21by9 {
-  padding-top: 42.857143%;
-}
-.tiny-pageembed--16by9 {
-  padding-top: 56.25%;
-}
-.tiny-pageembed--4by3 {
-  padding-top: 75%;
-}
-.tiny-pageembed--1by1 {
-  padding-top: 100%;
-}
-.tiny-pageembed--21by9 iframe,
-.tiny-pageembed--16by9 iframe,
-.tiny-pageembed--4by3 iframe,
-.tiny-pageembed--1by1 iframe {
-  border: 0;
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-content-body[data-mce-placeholder] {
-  position: relative;
-}
-.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  color: rgba(34, 47, 62, 0.7);
-  content: attr(data-mce-placeholder);
-  position: absolute;
-}
-.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  left: 1px;
-}
-.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
-  right: 1px;
-}
-.mce-content-body div.mce-resizehandle {
-  background-color: #4099ff;
-  border-color: #4099ff;
-  border-style: solid;
-  border-width: 1px;
-  box-sizing: border-box;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-  z-index: 10000;
-}
-.mce-content-body div.mce-resizehandle:hover {
-  background-color: #4099ff;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(1) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(2) {
-  cursor: nesw-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(3) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(4) {
-  cursor: nesw-resize;
-}
-.mce-content-body .mce-clonedresizable {
-  opacity: 0.5;
-  outline: 1px dashed black;
-  position: absolute;
-  z-index: 10000;
-}
-.mce-content-body .mce-resize-helper {
-  background: #555;
-  background: rgba(0, 0, 0, 0.75);
-  border: 1px;
-  border-radius: 3px;
-  color: white;
-  display: none;
-  font-family: sans-serif;
-  font-size: 12px;
-  line-height: 14px;
-  margin: 5px 10px;
-  padding: 5px;
-  position: absolute;
-  white-space: nowrap;
-  z-index: 10001;
-}
-.tox-rtc-user-selection {
-  position: relative;
-}
-.tox-rtc-user-cursor {
-  bottom: 0;
-  cursor: default;
-  position: absolute;
-  top: 0;
-  width: 2px;
-}
-.tox-rtc-user-cursor::before {
-  background-color: inherit;
-  border-radius: 50%;
-  content: '';
-  display: block;
-  height: 8px;
-  position: absolute;
-  right: -3px;
-  top: -3px;
-  width: 8px;
-}
-.tox-rtc-user-cursor:hover::after {
-  background-color: inherit;
-  border-radius: 100px;
-  box-sizing: border-box;
-  color: #fff;
-  content: attr(data-user);
-  display: block;
-  font-size: 12px;
-  font-weight: bold;
-  left: -5px;
-  min-height: 8px;
-  min-width: 8px;
-  padding: 0 12px;
-  position: absolute;
-  top: -11px;
-  white-space: nowrap;
-  z-index: 1000;
-}
-.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
-  background-color: #2dc26b;
-}
-.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
-  background-color: #e03e2d;
-}
-.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
-  background-color: #f1c40f;
-}
-.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
-  background-color: #3598db;
-}
-.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
-  background-color: #b96ad9;
-}
-.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
-  background-color: #e67e23;
-}
-.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
-  background-color: #aaa69d;
-}
-.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
-  background-color: #f368e0;
-}
-.tox-rtc-remote-image {
-  background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
-  border: 1px solid #ccc;
-  min-height: 240px;
-  min-width: 320px;
-}
-.mce-match-marker {
-  background: #aaa;
-  color: #fff;
-}
-.mce-match-marker-selected {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::-moz-selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-content-body img[data-mce-selected],
-.mce-content-body table[data-mce-selected] {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body hr[data-mce-selected] {
-  outline: 3px solid #b4d7ff;
-  outline-offset: 1px;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body *[contentEditable=false][data-mce-selected] {
-  cursor: not-allowed;
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
-.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
-  outline: none;
-}
-.mce-content-body *[data-mce-selected="inline-boundary"] {
-  background-color: #b4d7ff;
-}
-.mce-content-body .mce-edit-focus {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body td[data-mce-selected],
-.mce-content-body th[data-mce-selected] {
-  background-color: #b4d7ff !important;
-}
-.mce-content-body td[data-mce-selected]::-moz-selection,
-.mce-content-body th[data-mce-selected]::-moz-selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected]::selection,
-.mce-content-body th[data-mce-selected]::selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected] *,
-.mce-content-body th[data-mce-selected] * {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.mce-content-body img::-moz-selection {
-  background: none;
-}
-.mce-content-body img::selection {
-  background: none;
-}
-.ephox-snooker-resizer-bar {
-  background-color: #b4d7ff;
-  opacity: 0;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.ephox-snooker-resizer-cols {
-  cursor: col-resize;
-}
-.ephox-snooker-resizer-rows {
-  cursor: row-resize;
-}
-.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
-  opacity: 1;
-}
-.mce-spellchecker-word {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-  height: 2rem;
-}
-.mce-spellchecker-grammar {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-}
-.mce-toc {
-  border: 1px solid gray;
-}
-.mce-toc h2 {
-  margin: 4px;
-}
-.mce-toc li {
-  list-style-type: none;
-}
-.mce-item-table,
-.mce-item-table td,
-.mce-item-table th,
-.mce-item-table caption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks p,
-.mce-visualblocks h1,
-.mce-visualblocks h2,
-.mce-visualblocks h3,
-.mce-visualblocks h4,
-.mce-visualblocks h5,
-.mce-visualblocks h6,
-.mce-visualblocks div:not([data-mce-bogus]),
-.mce-visualblocks section,
-.mce-visualblocks article,
-.mce-visualblocks blockquote,
-.mce-visualblocks address,
-.mce-visualblocks pre,
-.mce-visualblocks figure,
-.mce-visualblocks figcaption,
-.mce-visualblocks hgroup,
-.mce-visualblocks aside,
-.mce-visualblocks ul,
-.mce-visualblocks ol,
-.mce-visualblocks dl {
-  background-repeat: no-repeat;
-  border: 1px dashed #bbb;
-  margin-left: 3px;
-  padding-top: 10px;
-}
-.mce-visualblocks p {
-  background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
-}
-.mce-visualblocks h1 {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
-}
-.mce-visualblocks h2 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
-}
-.mce-visualblocks h3 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
-}
-.mce-visualblocks h4 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
-}
-.mce-visualblocks h5 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
-}
-.mce-visualblocks h6 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
-}
-.mce-visualblocks div:not([data-mce-bogus]) {
-  background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
-}
-.mce-visualblocks section {
-  background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
-}
-.mce-visualblocks article {
-  background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
-}
-.mce-visualblocks blockquote {
-  background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
-}
-.mce-visualblocks address {
-  background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
-}
-.mce-visualblocks pre {
-  background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
-}
-.mce-visualblocks figure {
-  background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
-}
-.mce-visualblocks figcaption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks hgroup {
-  background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
-}
-.mce-visualblocks aside {
-  background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
-}
-.mce-visualblocks ul {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
-}
-.mce-visualblocks ol {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
-}
-.mce-visualblocks dl {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
-}
-.mce-visualblocks:not([dir=rtl]) p,
-.mce-visualblocks:not([dir=rtl]) h1,
-.mce-visualblocks:not([dir=rtl]) h2,
-.mce-visualblocks:not([dir=rtl]) h3,
-.mce-visualblocks:not([dir=rtl]) h4,
-.mce-visualblocks:not([dir=rtl]) h5,
-.mce-visualblocks:not([dir=rtl]) h6,
-.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
-.mce-visualblocks:not([dir=rtl]) section,
-.mce-visualblocks:not([dir=rtl]) article,
-.mce-visualblocks:not([dir=rtl]) blockquote,
-.mce-visualblocks:not([dir=rtl]) address,
-.mce-visualblocks:not([dir=rtl]) pre,
-.mce-visualblocks:not([dir=rtl]) figure,
-.mce-visualblocks:not([dir=rtl]) figcaption,
-.mce-visualblocks:not([dir=rtl]) hgroup,
-.mce-visualblocks:not([dir=rtl]) aside,
-.mce-visualblocks:not([dir=rtl]) ul,
-.mce-visualblocks:not([dir=rtl]) ol,
-.mce-visualblocks:not([dir=rtl]) dl {
-  margin-left: 3px;
-}
-.mce-visualblocks[dir=rtl] p,
-.mce-visualblocks[dir=rtl] h1,
-.mce-visualblocks[dir=rtl] h2,
-.mce-visualblocks[dir=rtl] h3,
-.mce-visualblocks[dir=rtl] h4,
-.mce-visualblocks[dir=rtl] h5,
-.mce-visualblocks[dir=rtl] h6,
-.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
-.mce-visualblocks[dir=rtl] section,
-.mce-visualblocks[dir=rtl] article,
-.mce-visualblocks[dir=rtl] blockquote,
-.mce-visualblocks[dir=rtl] address,
-.mce-visualblocks[dir=rtl] pre,
-.mce-visualblocks[dir=rtl] figure,
-.mce-visualblocks[dir=rtl] figcaption,
-.mce-visualblocks[dir=rtl] hgroup,
-.mce-visualblocks[dir=rtl] aside,
-.mce-visualblocks[dir=rtl] ul,
-.mce-visualblocks[dir=rtl] ol,
-.mce-visualblocks[dir=rtl] dl {
-  background-position-x: right;
-  margin-right: 3px;
-}
-.mce-nbsp,
-.mce-shy {
-  background: #aaa;
-}
-.mce-shy::after {
-  content: '-';
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.inline.min.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.min.css


+ 0 - 29
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.mobile.css

@@ -1,29 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
-  /* Note: this file is used inside the content, so isn't part of theming */
-  background-color: green;
-  display: inline-block;
-  opacity: 0.5;
-  position: absolute;
-}
-body {
-  -webkit-text-size-adjust: none;
-}
-body img {
-  /* this is related to the content margin */
-  max-width: 96vw;
-}
-body table img {
-  max-width: 95%;
-}
-body {
-  font-family: sans-serif;
-}
-table {
-  border-collapse: collapse;
-}

+ 0 - 7
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/content.mobile.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

BIN
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/fonts/tinymce-mobile.woff


+ 0 - 2897
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.css

@@ -1,2897 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tox {
-  box-sizing: content-box;
-  color: #2A3746;
-  cursor: auto;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 16px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: normal;
-  -webkit-tap-highlight-color: transparent;
-  text-decoration: none;
-  text-shadow: none;
-  text-transform: none;
-  vertical-align: initial;
-  white-space: normal;
-}
-.tox *:not(svg):not(rect) {
-  box-sizing: inherit;
-  color: inherit;
-  cursor: inherit;
-  direction: inherit;
-  font-family: inherit;
-  font-size: inherit;
-  font-style: inherit;
-  font-weight: inherit;
-  line-height: inherit;
-  -webkit-tap-highlight-color: inherit;
-  text-align: inherit;
-  text-decoration: inherit;
-  text-shadow: inherit;
-  text-transform: inherit;
-  vertical-align: inherit;
-  white-space: inherit;
-}
-.tox *:not(svg):not(rect) {
-  /* stylelint-disable-line no-duplicate-selectors */
-  background: transparent;
-  border: 0;
-  float: none;
-  height: auto;
-  margin: 0;
-  max-width: none;
-  outline: 0;
-  padding: 0;
-  position: static;
-  width: auto;
-}
-.tox:not([dir=rtl]) {
-  direction: ltr;
-  text-align: left;
-}
-.tox[dir=rtl] {
-  direction: rtl;
-  text-align: right;
-}
-.tox-tinymce {
-  border: 1px solid #000000;
-  border-radius: 0;
-  box-shadow: none;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: column;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  overflow: hidden;
-  position: relative;
-  visibility: inherit !important;
-}
-.tox-tinymce-inline {
-  border: none;
-  box-shadow: none;
-}
-.tox-tinymce-inline .tox-editor-header {
-  border: 1px solid #000000;
-  border-radius: 0;
-  box-shadow: none;
-}
-.tox-tinymce-aux {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  z-index: 1300;
-}
-.tox-tinymce *:focus,
-.tox-tinymce-aux *:focus {
-  outline: none;
-}
-button::-moz-focus-inner {
-  border: 0;
-}
-.tox .accessibility-issue__header {
-  align-items: center;
-  display: flex;
-  margin-bottom: 4px;
-}
-.tox .accessibility-issue__description {
-  align-items: stretch;
-  border: 1px solid #000000;
-  border-radius: 3px;
-  display: flex;
-  justify-content: space-between;
-}
-.tox .accessibility-issue__description > div {
-  padding-bottom: 4px;
-}
-.tox .accessibility-issue__description > div > div {
-  align-items: center;
-  display: flex;
-  margin-bottom: 4px;
-}
-.tox .accessibility-issue__description > *:last-child:not(:only-child) {
-  border-color: #000000;
-  border-style: solid;
-}
-.tox .accessibility-issue__repair {
-  margin-top: 16px;
-}
-.tox .accessibility-issue--info .accessibility-issue__description {
-  background-color: rgba(32, 122, 183, 0.5);
-  border-color: #207ab7;
-  color: #fff;
-}
-.tox .accessibility-issue--info .accessibility-issue__description > *:last-child {
-  border-color: #207ab7;
-}
-.tox .accessibility-issue--info h2 {
-  color: #fff;
-}
-.tox .accessibility-issue--info .tox-icon svg {
-  fill: #fff;
-}
-.tox .accessibility-issue--info a .tox-icon {
-  color: #fff;
-}
-.tox .accessibility-issue--warn .accessibility-issue__description {
-  background-color: rgba(255, 165, 0, 0.5);
-  border-color: rgba(255, 165, 0, 0.8);
-  color: #fff;
-}
-.tox .accessibility-issue--warn .accessibility-issue__description > *:last-child {
-  border-color: rgba(255, 165, 0, 0.8);
-}
-.tox .accessibility-issue--warn h2 {
-  color: #fff;
-}
-.tox .accessibility-issue--warn .tox-icon svg {
-  fill: #fff;
-}
-.tox .accessibility-issue--warn a .tox-icon {
-  color: #fff;
-}
-.tox .accessibility-issue--error .accessibility-issue__description {
-  background-color: rgba(204, 0, 0, 0.5);
-  border-color: rgba(204, 0, 0, 0.8);
-  color: #fff;
-}
-.tox .accessibility-issue--error .accessibility-issue__description > *:last-child {
-  border-color: rgba(204, 0, 0, 0.8);
-}
-.tox .accessibility-issue--error h2 {
-  color: #fff;
-}
-.tox .accessibility-issue--error .tox-icon svg {
-  fill: #fff;
-}
-.tox .accessibility-issue--error a .tox-icon {
-  color: #fff;
-}
-.tox .accessibility-issue--success .accessibility-issue__description {
-  background-color: rgba(120, 171, 70, 0.5);
-  border-color: rgba(120, 171, 70, 0.8);
-  color: #fff;
-}
-.tox .accessibility-issue--success .accessibility-issue__description > *:last-child {
-  border-color: rgba(120, 171, 70, 0.8);
-}
-.tox .accessibility-issue--success h2 {
-  color: #fff;
-}
-.tox .accessibility-issue--success .tox-icon svg {
-  fill: #fff;
-}
-.tox .accessibility-issue--success a .tox-icon {
-  color: #fff;
-}
-.tox .tox-dialog__body-content .accessibility-issue__header h1,
-.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {
-  margin-top: 0;
-}
-.tox:not([dir=rtl]) .accessibility-issue__header .tox-button {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .accessibility-issue__header > *:nth-last-child(2) {
-  margin-left: auto;
-}
-.tox:not([dir=rtl]) .accessibility-issue__description {
-  padding: 4px 4px 4px 8px;
-}
-.tox:not([dir=rtl]) .accessibility-issue__description > *:last-child {
-  border-left-width: 1px;
-  padding-left: 4px;
-}
-.tox[dir=rtl] .accessibility-issue__header .tox-button {
-  margin-right: 4px;
-}
-.tox[dir=rtl] .accessibility-issue__header > *:nth-last-child(2) {
-  margin-right: auto;
-}
-.tox[dir=rtl] .accessibility-issue__description {
-  padding: 4px 8px 4px 4px;
-}
-.tox[dir=rtl] .accessibility-issue__description > *:last-child {
-  border-right-width: 1px;
-  padding-right: 4px;
-}
-.tox .tox-anchorbar {
-  display: flex;
-  flex: 0 0 auto;
-}
-.tox .tox-bar {
-  display: flex;
-  flex: 0 0 auto;
-}
-.tox .tox-button {
-  background-color: #207ab7;
-  background-image: none;
-  background-position: 0 0;
-  background-repeat: repeat;
-  border-color: #207ab7;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  color: #fff;
-  cursor: pointer;
-  display: inline-block;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 14px;
-  font-weight: bold;
-  letter-spacing: normal;
-  line-height: 24px;
-  margin: 0;
-  outline: none;
-  padding: 4px 16px;
-  text-align: center;
-  text-decoration: none;
-  text-transform: capitalize;
-  white-space: nowrap;
-}
-.tox .tox-button[disabled] {
-  background-color: #207ab7;
-  background-image: none;
-  border-color: #207ab7;
-  box-shadow: none;
-  color: rgba(255, 255, 255, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-button:focus:not(:disabled) {
-  background-color: #1c6ca1;
-  background-image: none;
-  border-color: #1c6ca1;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button:hover:not(:disabled) {
-  background-color: #1c6ca1;
-  background-image: none;
-  border-color: #1c6ca1;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button:active:not(:disabled) {
-  background-color: #185d8c;
-  background-image: none;
-  border-color: #185d8c;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--secondary {
-  background-color: #3d546f;
-  background-image: none;
-  background-position: 0 0;
-  background-repeat: repeat;
-  border-color: #3d546f;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  color: #fff;
-  outline: none;
-  padding: 4px 16px;
-  text-decoration: none;
-  text-transform: capitalize;
-}
-.tox .tox-button--secondary[disabled] {
-  background-color: #3d546f;
-  background-image: none;
-  border-color: #3d546f;
-  box-shadow: none;
-  color: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-button--secondary:focus:not(:disabled) {
-  background-color: #34485f;
-  background-image: none;
-  border-color: #34485f;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--secondary:hover:not(:disabled) {
-  background-color: #34485f;
-  background-image: none;
-  border-color: #34485f;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--secondary:active:not(:disabled) {
-  background-color: #2b3b4e;
-  background-image: none;
-  border-color: #2b3b4e;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--icon,
-.tox .tox-button.tox-button--icon,
-.tox .tox-button.tox-button--secondary.tox-button--icon {
-  padding: 4px;
-}
-.tox .tox-button--icon .tox-icon svg,
-.tox .tox-button.tox-button--icon .tox-icon svg,
-.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {
-  display: block;
-  fill: currentColor;
-}
-.tox .tox-button-link {
-  background: 0;
-  border: none;
-  box-sizing: border-box;
-  cursor: pointer;
-  display: inline-block;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 16px;
-  font-weight: normal;
-  line-height: 1.3;
-  margin: 0;
-  padding: 0;
-  white-space: nowrap;
-}
-.tox .tox-button-link--sm {
-  font-size: 14px;
-}
-.tox .tox-button--naked {
-  background-color: transparent;
-  border-color: transparent;
-  box-shadow: unset;
-  color: #fff;
-}
-.tox .tox-button--naked[disabled] {
-  background-color: #3d546f;
-  border-color: #3d546f;
-  box-shadow: none;
-  color: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-button--naked:hover:not(:disabled) {
-  background-color: #34485f;
-  border-color: #34485f;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--naked:focus:not(:disabled) {
-  background-color: #34485f;
-  border-color: #34485f;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--naked:active:not(:disabled) {
-  background-color: #2b3b4e;
-  border-color: #2b3b4e;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--naked .tox-icon svg {
-  fill: currentColor;
-}
-.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
-  color: #fff;
-}
-.tox .tox-checkbox {
-  align-items: center;
-  border-radius: 3px;
-  cursor: pointer;
-  display: flex;
-  height: 36px;
-  min-width: 36px;
-}
-.tox .tox-checkbox__input {
-  /* Hide from view but visible to screen readers */
-  height: 1px;
-  overflow: hidden;
-  position: absolute;
-  top: auto;
-  width: 1px;
-}
-.tox .tox-checkbox__icons {
-  align-items: center;
-  border-radius: 3px;
-  box-shadow: 0 0 0 2px transparent;
-  box-sizing: content-box;
-  display: flex;
-  height: 24px;
-  justify-content: center;
-  padding: calc(4px - 1px);
-  width: 24px;
-}
-.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  display: block;
-  fill: rgba(255, 255, 255, 0.2);
-}
-.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
-  display: none;
-  fill: #207ab7;
-}
-.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {
-  display: none;
-  fill: #207ab7;
-}
-.tox .tox-checkbox--disabled {
-  color: rgba(255, 255, 255, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {
-  fill: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  fill: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
-  fill: rgba(255, 255, 255, 0.5);
-}
-.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  display: none;
-}
-.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {
-  display: block;
-}
-.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  display: none;
-}
-.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
-  display: block;
-}
-.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
-  border-radius: 3px;
-  box-shadow: inset 0 0 0 1px #207ab7;
-  padding: calc(4px - 1px);
-}
-.tox:not([dir=rtl]) .tox-checkbox__label {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .tox-checkbox__input {
-  left: -10000px;
-}
-.tox:not([dir=rtl]) .tox-bar .tox-checkbox {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-checkbox__label {
-  margin-right: 4px;
-}
-.tox[dir=rtl] .tox-checkbox__input {
-  right: -10000px;
-}
-.tox[dir=rtl] .tox-bar .tox-checkbox {
-  margin-right: 4px;
-}
-.tox {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox .tox-collection--toolbar .tox-collection__group {
-  display: flex;
-  padding: 0;
-}
-.tox .tox-collection--grid .tox-collection__group {
-  display: flex;
-  flex-wrap: wrap;
-  max-height: 208px;
-  overflow-x: hidden;
-  overflow-y: auto;
-  padding: 0;
-}
-.tox .tox-collection--list .tox-collection__group {
-  border-bottom-width: 0;
-  border-color: #1a1a1a;
-  border-left-width: 0;
-  border-right-width: 0;
-  border-style: solid;
-  border-top-width: 1px;
-  padding: 4px 0;
-}
-.tox .tox-collection--list .tox-collection__group:first-child {
-  border-top-width: 0;
-}
-.tox .tox-collection__group-heading {
-  background-color: #333333;
-  color: #fff;
-  cursor: default;
-  font-size: 12px;
-  font-style: normal;
-  font-weight: normal;
-  margin-bottom: 4px;
-  margin-top: -4px;
-  padding: 4px 8px;
-  text-transform: none;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.tox .tox-collection__item {
-  align-items: center;
-  color: #fff;
-  cursor: pointer;
-  display: flex;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.tox .tox-collection--list .tox-collection__item {
-  padding: 4px 8px;
-}
-.tox .tox-collection--toolbar .tox-collection__item {
-  border-radius: 3px;
-  padding: 4px;
-}
-.tox .tox-collection--grid .tox-collection__item {
-  border-radius: 3px;
-  padding: 4px;
-}
-.tox .tox-collection--list .tox-collection__item--enabled {
-  background-color: #2b3b4e;
-  color: #fff;
-}
-.tox .tox-collection--list .tox-collection__item--active {
-  background-color: #4a5562;
-}
-.tox .tox-collection--toolbar .tox-collection__item--enabled {
-  background-color: #757d87;
-  color: #fff;
-}
-.tox .tox-collection--toolbar .tox-collection__item--active {
-  background-color: #4a5562;
-}
-.tox .tox-collection--grid .tox-collection__item--enabled {
-  background-color: #757d87;
-  color: #fff;
-}
-.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
-  background-color: #4a5562;
-  color: #fff;
-}
-.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
-  color: #fff;
-}
-.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
-  color: #fff;
-}
-.tox .tox-collection__item--state-disabled {
-  background-color: transparent;
-  color: rgba(255, 255, 255, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-collection__item-icon,
-.tox .tox-collection__item-checkmark {
-  align-items: center;
-  display: flex;
-  height: 24px;
-  justify-content: center;
-  width: 24px;
-}
-.tox .tox-collection__item-icon svg,
-.tox .tox-collection__item-checkmark svg {
-  fill: currentColor;
-}
-.tox .tox-collection--toolbar-lg .tox-collection__item-icon {
-  height: 48px;
-  width: 48px;
-}
-.tox .tox-collection__item-label {
-  color: currentColor;
-  display: inline-block;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 24px;
-  text-transform: none;
-  word-break: break-all;
-}
-.tox .tox-collection__item-accessory {
-  color: rgba(255, 255, 255, 0.5);
-  display: inline-block;
-  font-size: 14px;
-  height: 24px;
-  line-height: 24px;
-  text-transform: none;
-}
-.tox .tox-collection__item-caret {
-  align-items: center;
-  display: flex;
-  min-height: 24px;
-}
-.tox .tox-collection__item-caret::after {
-  content: '';
-  font-size: 0;
-  min-height: inherit;
-}
-.tox .tox-collection__item-caret svg {
-  fill: #fff;
-}
-.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {
-  display: none;
-}
-.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {
-  display: none;
-}
-.tox .tox-collection--horizontal {
-  background-color: #2b3b4e;
-  border: 1px solid #1a1a1a;
-  border-radius: 3px;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-  display: flex;
-  flex: 0 0 auto;
-  flex-shrink: 0;
-  flex-wrap: nowrap;
-  margin-bottom: 0;
-  overflow-x: auto;
-  padding: 0;
-}
-.tox .tox-collection--horizontal .tox-collection__group {
-  align-items: center;
-  display: flex;
-  flex-wrap: nowrap;
-  margin: 0;
-  padding: 0 4px;
-}
-.tox .tox-collection--horizontal .tox-collection__item {
-  height: 34px;
-  margin: 2px 0 3px 0;
-  padding: 0 4px;
-}
-.tox .tox-collection--horizontal .tox-collection__item-label {
-  white-space: nowrap;
-}
-.tox .tox-collection--horizontal .tox-collection__item-caret {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
-  border-right: 1px solid #000000;
-}
-.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {
-  margin-left: 8px;
-}
-.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .tox-collection__item-accessory {
-  margin-left: 16px;
-  text-align: right;
-}
-.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {
-  margin-left: 16px;
-}
-.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
-  border-left: 1px solid #000000;
-}
-.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {
-  margin-right: 8px;
-}
-.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child {
-  margin-right: 4px;
-}
-.tox[dir=rtl] .tox-collection__item-icon-rtl {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {
-  transform: rotateY(180deg);
-}
-.tox[dir=rtl] .tox-collection__item-accessory {
-  margin-right: 16px;
-  text-align: left;
-}
-.tox[dir=rtl] .tox-collection .tox-collection__item-caret {
-  margin-right: 16px;
-  transform: rotateY(180deg);
-}
-.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {
-  margin-right: 4px;
-}
-.tox .tox-color-picker-container {
-  display: flex;
-  flex-direction: row;
-  height: 225px;
-  margin: 0;
-}
-.tox .tox-sv-palette {
-  box-sizing: border-box;
-  display: flex;
-  height: 100%;
-}
-.tox .tox-sv-palette-spectrum {
-  height: 100%;
-}
-.tox .tox-sv-palette,
-.tox .tox-sv-palette-spectrum {
-  width: 225px;
-}
-.tox .tox-sv-palette-thumb {
-  background: none;
-  border: 1px solid black;
-  border-radius: 50%;
-  box-sizing: content-box;
-  height: 12px;
-  position: absolute;
-  width: 12px;
-}
-.tox .tox-sv-palette-inner-thumb {
-  border: 1px solid white;
-  border-radius: 50%;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-}
-.tox .tox-hue-slider {
-  box-sizing: border-box;
-  height: 100%;
-  width: 25px;
-}
-.tox .tox-hue-slider-spectrum {
-  background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);
-  height: 100%;
-  width: 100%;
-}
-.tox .tox-hue-slider,
-.tox .tox-hue-slider-spectrum {
-  width: 20px;
-}
-.tox .tox-hue-slider-thumb {
-  background: white;
-  border: 1px solid black;
-  box-sizing: content-box;
-  height: 4px;
-  width: 100%;
-}
-.tox .tox-rgb-form {
-  display: flex;
-  flex-direction: column;
-  justify-content: space-between;
-}
-.tox .tox-rgb-form div {
-  align-items: center;
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 5px;
-  width: inherit;
-}
-.tox .tox-rgb-form input {
-  width: 6em;
-}
-.tox .tox-rgb-form input.tox-invalid {
-  /* Need !important to override Chrome's focus styling unfortunately */
-  border: 1px solid red !important;
-}
-.tox .tox-rgb-form .tox-rgba-preview {
-  border: 1px solid black;
-  flex-grow: 2;
-  margin-bottom: 0;
-}
-.tox:not([dir=rtl]) .tox-sv-palette {
-  margin-right: 15px;
-}
-.tox:not([dir=rtl]) .tox-hue-slider {
-  margin-right: 15px;
-}
-.tox:not([dir=rtl]) .tox-hue-slider-thumb {
-  margin-left: -1px;
-}
-.tox:not([dir=rtl]) .tox-rgb-form label {
-  margin-right: 0.5em;
-}
-.tox[dir=rtl] .tox-sv-palette {
-  margin-left: 15px;
-}
-.tox[dir=rtl] .tox-hue-slider {
-  margin-left: 15px;
-}
-.tox[dir=rtl] .tox-hue-slider-thumb {
-  margin-right: -1px;
-}
-.tox[dir=rtl] .tox-rgb-form label {
-  margin-left: 0.5em;
-}
-.tox .tox-toolbar .tox-swatches,
-.tox .tox-toolbar__primary .tox-swatches,
-.tox .tox-toolbar__overflow .tox-swatches {
-  margin: 2px 0 3px 4px;
-}
-.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {
-  border: 0;
-  margin: -4px 0;
-}
-.tox .tox-swatches__row {
-  display: flex;
-}
-.tox .tox-swatch {
-  height: 30px;
-  transition: transform 0.15s, box-shadow 0.15s;
-  width: 30px;
-}
-.tox .tox-swatch:hover,
-.tox .tox-swatch:focus {
-  box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;
-  transform: scale(0.8);
-}
-.tox .tox-swatch--remove {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-.tox .tox-swatch--remove svg path {
-  stroke: #e74c3c;
-}
-.tox .tox-swatches__picker-btn {
-  align-items: center;
-  background-color: transparent;
-  border: 0;
-  cursor: pointer;
-  display: flex;
-  height: 30px;
-  justify-content: center;
-  outline: none;
-  padding: 0;
-  width: 30px;
-}
-.tox .tox-swatches__picker-btn svg {
-  height: 24px;
-  width: 24px;
-}
-.tox .tox-swatches__picker-btn:hover {
-  background: #4a5562;
-}
-.tox:not([dir=rtl]) .tox-swatches__picker-btn {
-  margin-left: auto;
-}
-.tox[dir=rtl] .tox-swatches__picker-btn {
-  margin-right: auto;
-}
-.tox .tox-comment-thread {
-  background: #2b3b4e;
-  position: relative;
-}
-.tox .tox-comment-thread > *:not(:first-child) {
-  margin-top: 8px;
-}
-.tox .tox-comment {
-  background: #2b3b4e;
-  border: 1px solid #000000;
-  border-radius: 3px;
-  box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);
-  padding: 8px 8px 16px 8px;
-  position: relative;
-}
-.tox .tox-comment__header {
-  align-items: center;
-  color: #fff;
-  display: flex;
-  justify-content: space-between;
-}
-.tox .tox-comment__date {
-  color: rgba(255, 255, 255, 0.5);
-  font-size: 12px;
-}
-.tox .tox-comment__body {
-  color: #fff;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  margin-top: 8px;
-  position: relative;
-  text-transform: initial;
-}
-.tox .tox-comment__body textarea {
-  resize: none;
-  white-space: normal;
-  width: 100%;
-}
-.tox .tox-comment__expander {
-  padding-top: 8px;
-}
-.tox .tox-comment__expander p {
-  color: rgba(255, 255, 255, 0.5);
-  font-size: 14px;
-  font-style: normal;
-}
-.tox .tox-comment__body p {
-  margin: 0;
-}
-.tox .tox-comment__buttonspacing {
-  padding-top: 16px;
-  text-align: center;
-}
-.tox .tox-comment-thread__overlay::after {
-  background: #2b3b4e;
-  bottom: 0;
-  content: "";
-  display: flex;
-  left: 0;
-  opacity: 0.9;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 5;
-}
-.tox .tox-comment__reply {
-  display: flex;
-  flex-shrink: 0;
-  flex-wrap: wrap;
-  justify-content: flex-end;
-  margin-top: 8px;
-}
-.tox .tox-comment__reply > *:first-child {
-  margin-bottom: 8px;
-  width: 100%;
-}
-.tox .tox-comment__edit {
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: flex-end;
-  margin-top: 16px;
-}
-.tox .tox-comment__gradient::after {
-  background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e);
-  bottom: 0;
-  content: "";
-  display: block;
-  height: 5em;
-  margin-top: -40px;
-  position: absolute;
-  width: 100%;
-}
-.tox .tox-comment__overlay {
-  background: #2b3b4e;
-  bottom: 0;
-  display: flex;
-  flex-direction: column;
-  flex-grow: 1;
-  left: 0;
-  opacity: 0.9;
-  position: absolute;
-  right: 0;
-  text-align: center;
-  top: 0;
-  z-index: 5;
-}
-.tox .tox-comment__loading-text {
-  align-items: center;
-  color: #fff;
-  display: flex;
-  flex-direction: column;
-  position: relative;
-}
-.tox .tox-comment__loading-text > div {
-  padding-bottom: 16px;
-}
-.tox .tox-comment__overlaytext {
-  bottom: 0;
-  flex-direction: column;
-  font-size: 14px;
-  left: 0;
-  padding: 1em;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 10;
-}
-.tox .tox-comment__overlaytext p {
-  background-color: #2b3b4e;
-  box-shadow: 0 0 8px 8px #2b3b4e;
-  color: #fff;
-  text-align: center;
-}
-.tox .tox-comment__overlaytext div:nth-of-type(2) {
-  font-size: 0.8em;
-}
-.tox .tox-comment__busy-spinner {
-  align-items: center;
-  background-color: #2b3b4e;
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 20;
-}
-.tox .tox-comment__scroll {
-  display: flex;
-  flex-direction: column;
-  flex-shrink: 1;
-  overflow: auto;
-}
-.tox .tox-conversations {
-  margin: 8px;
-}
-.tox:not([dir=rtl]) .tox-comment__edit {
-  margin-left: 8px;
-}
-.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,
-.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,
-.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-comment__edit {
-  margin-right: 8px;
-}
-.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,
-.tox[dir=rtl] .tox-comment__edit > *:last-child,
-.tox[dir=rtl] .tox-comment__reply > *:last-child {
-  margin-right: 8px;
-}
-.tox .tox-user {
-  align-items: center;
-  display: flex;
-}
-.tox .tox-user__avatar svg {
-  fill: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-user__name {
-  color: rgba(255, 255, 255, 0.5);
-  font-size: 12px;
-  font-style: normal;
-  font-weight: bold;
-  text-transform: uppercase;
-}
-.tox:not([dir=rtl]) .tox-user__avatar svg {
-  margin-right: 8px;
-}
-.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-user__avatar svg {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-user__avatar + .tox-user__name {
-  margin-right: 8px;
-}
-.tox .tox-dialog-wrap {
-  align-items: center;
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: fixed;
-  right: 0;
-  top: 0;
-  z-index: 1100;
-}
-.tox .tox-dialog-wrap__backdrop {
-  background-color: rgba(34, 47, 62, 0.75);
-  bottom: 0;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 1;
-}
-.tox .tox-dialog-wrap__backdrop--opaque {
-  background-color: #222f3e;
-}
-.tox .tox-dialog {
-  background-color: #2b3b4e;
-  border-color: #000000;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15);
-  display: flex;
-  flex-direction: column;
-  max-height: 100%;
-  max-width: 480px;
-  overflow: hidden;
-  position: relative;
-  width: 95vw;
-  z-index: 2;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox .tox-dialog {
-    align-self: flex-start;
-    margin: 8px auto;
-    width: calc(100vw - 16px);
-  }
-}
-.tox .tox-dialog-inline {
-  z-index: 1100;
-}
-.tox .tox-dialog__header {
-  align-items: center;
-  background-color: #2b3b4e;
-  border-bottom: none;
-  color: #fff;
-  display: flex;
-  font-size: 16px;
-  justify-content: space-between;
-  padding: 8px 16px 0 16px;
-  position: relative;
-}
-.tox .tox-dialog__header .tox-button {
-  z-index: 1;
-}
-.tox .tox-dialog__draghandle {
-  cursor: grab;
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tox .tox-dialog__draghandle:active {
-  cursor: grabbing;
-}
-.tox .tox-dialog__dismiss {
-  margin-left: auto;
-}
-.tox .tox-dialog__title {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 20px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  margin: 0;
-  text-transform: none;
-}
-.tox .tox-dialog__body {
-  color: #fff;
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  font-size: 16px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  min-width: 0;
-  text-align: left;
-  text-transform: none;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox .tox-dialog__body {
-    flex-direction: column;
-  }
-}
-.tox .tox-dialog__body-nav {
-  align-items: flex-start;
-  display: flex;
-  flex-direction: column;
-  padding: 16px 16px;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {
-    flex-direction: row;
-    -webkit-overflow-scrolling: touch;
-    overflow-x: auto;
-    padding-bottom: 0;
-  }
-}
-.tox .tox-dialog__body-nav-item {
-  border-bottom: 2px solid transparent;
-  color: rgba(255, 255, 255, 0.5);
-  display: inline-block;
-  font-size: 14px;
-  line-height: 1.3;
-  margin-bottom: 8px;
-  text-decoration: none;
-  white-space: nowrap;
-}
-.tox .tox-dialog__body-nav-item:focus {
-  background-color: rgba(32, 122, 183, 0.1);
-}
-.tox .tox-dialog__body-nav-item--active {
-  border-bottom: 2px solid #207ab7;
-  color: #207ab7;
-}
-.tox .tox-dialog__body-content {
-  box-sizing: border-box;
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-  max-height: 650px;
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-  padding: 16px 16px;
-}
-.tox .tox-dialog__body-content > * {
-  margin-bottom: 0;
-  margin-top: 16px;
-}
-.tox .tox-dialog__body-content > *:first-child {
-  margin-top: 0;
-}
-.tox .tox-dialog__body-content > *:last-child {
-  margin-bottom: 0;
-}
-.tox .tox-dialog__body-content > *:only-child {
-  margin-bottom: 0;
-  margin-top: 0;
-}
-.tox .tox-dialog__body-content a {
-  color: #207ab7;
-  cursor: pointer;
-  text-decoration: none;
-}
-.tox .tox-dialog__body-content a:hover,
-.tox .tox-dialog__body-content a:focus {
-  color: #185d8c;
-  text-decoration: none;
-}
-.tox .tox-dialog__body-content a:active {
-  color: #185d8c;
-  text-decoration: none;
-}
-.tox .tox-dialog__body-content svg {
-  fill: #fff;
-}
-.tox .tox-dialog__body-content ul {
-  display: block;
-  list-style-type: disc;
-  margin-bottom: 16px;
-  -webkit-margin-end: 0;
-          margin-inline-end: 0;
-  -webkit-margin-start: 0;
-          margin-inline-start: 0;
-  -webkit-padding-start: 2.5rem;
-          padding-inline-start: 2.5rem;
-}
-.tox .tox-dialog__body-content .tox-form__group h1 {
-  font-size: 20px;
-  font-weight: bold;
-  margin-bottom: 16px;
-  margin-top: 2rem;
-}
-.tox .tox-dialog__body-content .tox-form__group h2 {
-  font-size: 16px;
-  font-weight: bold;
-  margin-bottom: 16px;
-  margin-top: 2rem;
-}
-.tox .tox-dialog__body-content .tox-form__group p {
-  margin-bottom: 16px;
-}
-.tox .tox-dialog__body-content .tox-form__group h1:first-child,
-.tox .tox-dialog__body-content .tox-form__group h2:first-child,
-.tox .tox-dialog__body-content .tox-form__group p:first-child {
-  margin-top: 0;
-}
-.tox .tox-dialog__body-content .tox-form__group h1:last-child,
-.tox .tox-dialog__body-content .tox-form__group h2:last-child,
-.tox .tox-dialog__body-content .tox-form__group p:last-child {
-  margin-bottom: 0;
-}
-.tox .tox-dialog__body-content .tox-form__group h1:only-child,
-.tox .tox-dialog__body-content .tox-form__group h2:only-child,
-.tox .tox-dialog__body-content .tox-form__group p:only-child {
-  margin-bottom: 0;
-  margin-top: 0;
-}
-.tox .tox-dialog--width-lg {
-  height: 650px;
-  max-width: 1200px;
-}
-.tox .tox-dialog--width-md {
-  max-width: 800px;
-}
-.tox .tox-dialog--width-md .tox-dialog__body-content {
-  overflow: auto;
-}
-.tox .tox-dialog__body-content--centered {
-  text-align: center;
-}
-.tox .tox-dialog__footer {
-  align-items: center;
-  background-color: #2b3b4e;
-  border-top: 1px solid #000000;
-  display: flex;
-  justify-content: space-between;
-  padding: 8px 16px;
-}
-.tox .tox-dialog__footer-start,
-.tox .tox-dialog__footer-end {
-  display: flex;
-}
-.tox .tox-dialog__busy-spinner {
-  align-items: center;
-  background-color: rgba(34, 47, 62, 0.75);
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 3;
-}
-.tox .tox-dialog__table {
-  border-collapse: collapse;
-  width: 100%;
-}
-.tox .tox-dialog__table thead th {
-  font-weight: bold;
-  padding-bottom: 8px;
-}
-.tox .tox-dialog__table tbody tr {
-  border-bottom: 1px solid #000000;
-}
-.tox .tox-dialog__table tbody tr:last-child {
-  border-bottom: none;
-}
-.tox .tox-dialog__table td {
-  padding-bottom: 8px;
-  padding-top: 8px;
-}
-.tox .tox-dialog__popups {
-  position: absolute;
-  width: 100%;
-  z-index: 1100;
-}
-.tox .tox-dialog__body-iframe {
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dialog__body-iframe .tox-navobj {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 100%;
-}
-.tox .tox-dialog-dock-fadeout {
-  opacity: 0;
-  visibility: hidden;
-}
-.tox .tox-dialog-dock-fadein {
-  opacity: 1;
-  visibility: visible;
-}
-.tox .tox-dialog-dock-transition {
-  transition: visibility 0s linear 0.3s, opacity 0.3s ease;
-}
-.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {
-  transition-delay: 0s;
-}
-body.tox-dialog__disable-scroll {
-  overflow: hidden;
-}
-.tox.tox-platform-ie {
-  /* IE11 CSS styles go here */
-}
-.tox.tox-platform-ie .tox-dialog-wrap {
-  position: -ms-device-fixed;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {
-    margin-right: 0;
-  }
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {
-    margin-left: 8px;
-  }
-}
-.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,
-.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-dialog__body {
-  text-align: right;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {
-    margin-left: 0;
-  }
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {
-    margin-right: 8px;
-  }
-}
-.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,
-.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {
-  margin-right: 8px;
-}
-.tox .tox-dropzone-container {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dropzone {
-  align-items: center;
-  background: #fff;
-  border: 2px dashed #000000;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: column;
-  flex-grow: 1;
-  justify-content: center;
-  min-height: 100px;
-  padding: 10px;
-}
-.tox .tox-dropzone p {
-  color: rgba(255, 255, 255, 0.5);
-  margin: 0 0 16px 0;
-}
-.tox .tox-edit-area {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  overflow: hidden;
-  position: relative;
-}
-.tox .tox-edit-area__iframe {
-  background-color: #fff;
-  border: 0;
-  box-sizing: border-box;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 100%;
-  position: absolute;
-  width: 100%;
-}
-.tox.tox-inline-edit-area {
-  border: 1px dotted #000000;
-}
-.tox .tox-editor-container {
-  display: flex;
-  flex: 1 1 auto;
-  flex-direction: column;
-  overflow: hidden;
-}
-.tox .tox-editor-header {
-  z-index: 1;
-}
-.tox:not(.tox-tinymce-inline) .tox-editor-header {
-  box-shadow: none;
-  transition: box-shadow 0.5s;
-}
-.tox.tox-tinymce--toolbar-bottom .tox-editor-header,
-.tox.tox-tinymce-inline .tox-editor-header {
-  margin-bottom: -1px;
-}
-.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
-  box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);
-}
-.tox-editor-dock-fadeout {
-  opacity: 0;
-  visibility: hidden;
-}
-.tox-editor-dock-fadein {
-  opacity: 1;
-  visibility: visible;
-}
-.tox-editor-dock-transition {
-  transition: visibility 0s linear 0.25s, opacity 0.25s ease;
-}
-.tox-editor-dock-transition.tox-editor-dock-fadein {
-  transition-delay: 0s;
-}
-.tox .tox-control-wrap {
-  flex: 1;
-  position: relative;
-}
-.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,
-.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,
-.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {
-  display: none;
-}
-.tox .tox-control-wrap svg {
-  display: block;
-}
-.tox .tox-control-wrap__status-icon-wrap {
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox .tox-control-wrap__status-icon-invalid svg {
-  fill: #c00;
-}
-.tox .tox-control-wrap__status-icon-unknown svg {
-  fill: orange;
-}
-.tox .tox-control-wrap__status-icon-valid svg {
-  fill: green;
-}
-.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,
-.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,
-.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {
-  padding-right: 32px;
-}
-.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {
-  right: 4px;
-}
-.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,
-.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,
-.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {
-  padding-left: 32px;
-}
-.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {
-  left: 4px;
-}
-.tox .tox-autocompleter {
-  max-width: 25em;
-}
-.tox .tox-autocompleter .tox-menu {
-  max-width: 25em;
-}
-.tox .tox-autocompleter .tox-autocompleter-highlight {
-  font-weight: bold;
-}
-.tox .tox-color-input {
-  display: flex;
-  position: relative;
-  z-index: 1;
-}
-.tox .tox-color-input .tox-textfield {
-  z-index: -1;
-}
-.tox .tox-color-input span {
-  border-color: rgba(42, 55, 70, 0.2);
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  height: 24px;
-  position: absolute;
-  top: 6px;
-  width: 24px;
-}
-.tox .tox-color-input span:hover:not([aria-disabled=true]),
-.tox .tox-color-input span:focus:not([aria-disabled=true]) {
-  border-color: #207ab7;
-  cursor: pointer;
-}
-.tox .tox-color-input span::before {
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%);
-  background-position: 0 0, 0 6px, 6px -6px, -6px 0;
-  background-size: 12px 12px;
-  border: 1px solid #2b3b4e;
-  border-radius: 3px;
-  box-sizing: border-box;
-  content: '';
-  height: 24px;
-  left: -1px;
-  position: absolute;
-  top: -1px;
-  width: 24px;
-  z-index: -1;
-}
-.tox .tox-color-input span[aria-disabled=true] {
-  cursor: not-allowed;
-}
-.tox:not([dir=rtl]) .tox-color-input {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox:not([dir=rtl]) .tox-color-input .tox-textfield {
-  padding-left: 36px;
-}
-.tox:not([dir=rtl]) .tox-color-input span {
-  left: 6px;
-}
-.tox[dir="rtl"] .tox-color-input {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox[dir="rtl"] .tox-color-input .tox-textfield {
-  padding-right: 36px;
-}
-.tox[dir="rtl"] .tox-color-input span {
-  right: 6px;
-}
-.tox .tox-label,
-.tox .tox-toolbar-label {
-  color: rgba(255, 255, 255, 0.5);
-  display: block;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  padding: 0 8px 0 0;
-  text-transform: none;
-  white-space: nowrap;
-}
-.tox .tox-toolbar-label {
-  padding: 0 8px;
-}
-.tox[dir=rtl] .tox-label {
-  padding: 0 0 0 8px;
-}
-.tox .tox-form {
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group {
-  box-sizing: border-box;
-  margin-bottom: 4px;
-}
-.tox .tox-form-group--maximize {
-  flex: 1;
-}
-.tox .tox-form__group--error {
-  color: #c00;
-}
-.tox .tox-form__group--collection {
-  display: flex;
-}
-.tox .tox-form__grid {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  justify-content: space-between;
-}
-.tox .tox-form__grid--2col > .tox-form__group {
-  width: calc(50% - (8px / 2));
-}
-.tox .tox-form__grid--3col > .tox-form__group {
-  width: calc(100% / 3 - (8px / 2));
-}
-.tox .tox-form__grid--4col > .tox-form__group {
-  width: calc(25% - (8px / 2));
-}
-.tox .tox-form__controls-h-stack {
-  align-items: center;
-  display: flex;
-}
-.tox .tox-form__group--inline {
-  align-items: center;
-  display: flex;
-}
-.tox .tox-form__group--stretched {
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group--stretched .tox-textarea {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group--stretched .tox-navobj {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 100%;
-}
-.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {
-  margin-right: 4px;
-}
-.tox .tox-lock.tox-locked .tox-lock-icon__unlock,
-.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {
-  display: none;
-}
-.tox .tox-textfield,
-.tox .tox-toolbar-textfield,
-.tox .tox-selectfield select,
-.tox .tox-textarea {
-  -webkit-appearance: none;
-     -moz-appearance: none;
-          appearance: none;
-  background-color: #2b3b4e;
-  border-color: #000000;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  color: #fff;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 16px;
-  line-height: 24px;
-  margin: 0;
-  min-height: 34px;
-  outline: none;
-  padding: 5px 4.75px;
-  resize: none;
-  width: 100%;
-}
-.tox .tox-textfield[disabled],
-.tox .tox-textarea[disabled] {
-  background-color: #222f3e;
-  color: rgba(255, 255, 255, 0.85);
-  cursor: not-allowed;
-}
-.tox .tox-textfield:focus,
-.tox .tox-selectfield select:focus,
-.tox .tox-textarea:focus {
-  border-color: #207ab7;
-  box-shadow: none;
-  outline: none;
-}
-.tox .tox-toolbar-textfield {
-  border-width: 0;
-  margin-bottom: 3px;
-  margin-top: 2px;
-  max-width: 250px;
-}
-.tox .tox-naked-btn {
-  background-color: transparent;
-  border: 0;
-  border-color: transparent;
-  box-shadow: unset;
-  color: #207ab7;
-  cursor: pointer;
-  display: block;
-  margin: 0;
-  padding: 0;
-}
-.tox .tox-naked-btn svg {
-  display: block;
-  fill: #fff;
-}
-.tox:not([dir=rtl]) .tox-toolbar-textfield + * {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-toolbar-textfield + * {
-  margin-right: 4px;
-}
-.tox .tox-selectfield {
-  cursor: pointer;
-  position: relative;
-}
-.tox .tox-selectfield select[disabled] {
-  background-color: #19232e;
-  color: rgba(255, 255, 255, 0.85);
-  cursor: not-allowed;
-}
-.tox .tox-selectfield select::-ms-expand {
-  display: none;
-}
-.tox .tox-selectfield svg {
-  pointer-events: none;
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox:not([dir=rtl]) .tox-selectfield select[size="0"],
-.tox:not([dir=rtl]) .tox-selectfield select[size="1"] {
-  padding-right: 24px;
-}
-.tox:not([dir=rtl]) .tox-selectfield svg {
-  right: 8px;
-}
-.tox[dir=rtl] .tox-selectfield select[size="0"],
-.tox[dir=rtl] .tox-selectfield select[size="1"] {
-  padding-left: 24px;
-}
-.tox[dir=rtl] .tox-selectfield svg {
-  left: 8px;
-}
-.tox .tox-textarea {
-  -webkit-appearance: textarea;
-     -moz-appearance: textarea;
-          appearance: textarea;
-  white-space: pre-wrap;
-}
-.tox-fullscreen {
-  border: 0;
-  height: 100%;
-  left: 0;
-  margin: 0;
-  overflow: hidden;
-  -ms-scroll-chaining: none;
-      overscroll-behavior: none;
-  padding: 0;
-  position: fixed;
-  top: 0;
-  touch-action: pinch-zoom;
-  width: 100%;
-}
-.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
-  display: none;
-}
-.tox-fullscreen .tox.tox-tinymce.tox-fullscreen {
-  z-index: 1200;
-}
-.tox-fullscreen .tox.tox-tinymce-aux {
-  z-index: 1201;
-}
-.tox .tox-help__more-link {
-  list-style: none;
-  margin-top: 1em;
-}
-.tox .tox-image-tools {
-  width: 100%;
-}
-.tox .tox-image-tools__toolbar {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-.tox .tox-image-tools__image {
-  background-color: #666;
-  height: 380px;
-  overflow: auto;
-  position: relative;
-  width: 100%;
-}
-.tox .tox-image-tools__image,
-.tox .tox-image-tools__image + .tox-image-tools__toolbar {
-  margin-top: 8px;
-}
-.tox .tox-image-tools__image-bg {
-  background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);
-}
-.tox .tox-image-tools__toolbar > .tox-spacer {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-croprect-block {
-  background: black;
-  filter: alpha(opacity=50);
-  opacity: 0.5;
-  position: absolute;
-  zoom: 1;
-}
-.tox .tox-croprect-handle {
-  border: 2px solid white;
-  height: 20px;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 20px;
-}
-.tox .tox-croprect-handle-move {
-  border: 0;
-  cursor: move;
-  position: absolute;
-}
-.tox .tox-croprect-handle-nw {
-  border-width: 2px 0 0 2px;
-  cursor: nw-resize;
-  left: 100px;
-  margin: -2px 0 0 -2px;
-  top: 100px;
-}
-.tox .tox-croprect-handle-ne {
-  border-width: 2px 2px 0 0;
-  cursor: ne-resize;
-  left: 200px;
-  margin: -2px 0 0 -20px;
-  top: 100px;
-}
-.tox .tox-croprect-handle-sw {
-  border-width: 0 0 2px 2px;
-  cursor: sw-resize;
-  left: 100px;
-  margin: -20px 2px 0 -2px;
-  top: 200px;
-}
-.tox .tox-croprect-handle-se {
-  border-width: 0 2px 2px 0;
-  cursor: se-resize;
-  left: 200px;
-  margin: -20px 0 0 -20px;
-  top: 200px;
-}
-.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
-  margin-left: 8px;
-}
-.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {
-  margin-left: 32px;
-}
-.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {
-  margin-left: 32px;
-}
-.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
-  margin-right: 8px;
-}
-.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {
-  margin-right: 32px;
-}
-.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {
-  margin-right: 32px;
-}
-.tox .tox-insert-table-picker {
-  display: flex;
-  flex-wrap: wrap;
-  width: 170px;
-}
-.tox .tox-insert-table-picker > div {
-  border-color: #000000;
-  border-style: solid;
-  border-width: 0 1px 1px 0;
-  box-sizing: border-box;
-  height: 17px;
-  width: 17px;
-}
-.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {
-  margin: -4px 0;
-}
-.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
-  background-color: rgba(32, 122, 183, 0.5);
-  border-color: rgba(32, 122, 183, 0.5);
-}
-.tox .tox-insert-table-picker__label {
-  color: #fff;
-  display: block;
-  font-size: 14px;
-  padding: 4px;
-  text-align: center;
-  width: 100%;
-}
-.tox:not([dir=rtl]) {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {
-  border-right: 0;
-}
-.tox[dir=rtl] {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {
-  border-right: 0;
-}
-.tox {
-  /* stylelint-disable */
-  /* stylelint-enable */
-}
-.tox .tox-menu {
-  background-color: #2b3b4e;
-  border: 1px solid #000000;
-  border-radius: 3px;
-  box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);
-  display: inline-block;
-  overflow: hidden;
-  vertical-align: top;
-  z-index: 1150;
-}
-.tox .tox-menu.tox-collection.tox-collection--list {
-  padding: 0;
-}
-.tox .tox-menu.tox-collection.tox-collection--toolbar {
-  padding: 4px;
-}
-.tox .tox-menu.tox-collection.tox-collection--grid {
-  padding: 4px;
-}
-.tox .tox-menu__label h1,
-.tox .tox-menu__label h2,
-.tox .tox-menu__label h3,
-.tox .tox-menu__label h4,
-.tox .tox-menu__label h5,
-.tox .tox-menu__label h6,
-.tox .tox-menu__label p,
-.tox .tox-menu__label blockquote,
-.tox .tox-menu__label code {
-  margin: 0;
-}
-.tox .tox-menubar {
-  background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;
-  background-color: #222f3e;
-  display: flex;
-  flex: 0 0 auto;
-  flex-shrink: 0;
-  flex-wrap: wrap;
-  padding: 0 4px 0 4px;
-}
-.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {
-  border-top: 1px solid #000000;
-}
-/* Deprecated. Remove in next major release */
-.tox .tox-mbtn {
-  align-items: center;
-  background: transparent;
-  border: 0;
-  border-radius: 3px;
-  box-shadow: none;
-  color: #fff;
-  display: flex;
-  flex: 0 0 auto;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  height: 34px;
-  justify-content: center;
-  margin: 2px 0 3px 0;
-  outline: none;
-  overflow: hidden;
-  padding: 0 4px;
-  text-transform: none;
-  width: auto;
-}
-.tox .tox-mbtn[disabled] {
-  background-color: transparent;
-  border: 0;
-  box-shadow: none;
-  color: rgba(255, 255, 255, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-mbtn:focus:not(:disabled) {
-  background: #4a5562;
-  border: 0;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-mbtn--active {
-  background: #757d87;
-  border: 0;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {
-  background: #4a5562;
-  border: 0;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-mbtn__select-label {
-  cursor: default;
-  font-weight: normal;
-  margin: 0 4px;
-}
-.tox .tox-mbtn[disabled] .tox-mbtn__select-label {
-  cursor: not-allowed;
-}
-.tox .tox-mbtn__select-chevron {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  width: 16px;
-  display: none;
-}
-.tox .tox-notification {
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  display: -ms-grid;
-  display: grid;
-  font-size: 14px;
-  font-weight: normal;
-  -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
-      grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
-  margin-top: 4px;
-  opacity: 0;
-  padding: 4px;
-  transition: transform 100ms ease-in, opacity 150ms ease-in;
-}
-.tox .tox-notification p {
-  font-size: 14px;
-  font-weight: normal;
-}
-.tox .tox-notification a {
-  text-decoration: underline;
-}
-.tox .tox-notification--in {
-  opacity: 1;
-}
-.tox .tox-notification--success {
-  background-color: #e4eeda;
-  border-color: #d7e6c8;
-  color: #fff;
-}
-.tox .tox-notification--success p {
-  color: #fff;
-}
-.tox .tox-notification--success a {
-  color: #547831;
-}
-.tox .tox-notification--success svg {
-  fill: #fff;
-}
-.tox .tox-notification--error {
-  background-color: #f8dede;
-  border-color: #f2bfbf;
-  color: #fff;
-}
-.tox .tox-notification--error p {
-  color: #fff;
-}
-.tox .tox-notification--error a {
-  color: #c00;
-}
-.tox .tox-notification--error svg {
-  fill: #fff;
-}
-.tox .tox-notification--warn,
-.tox .tox-notification--warning {
-  background-color: #fffaea;
-  border-color: #ffe89d;
-  color: #fff;
-}
-.tox .tox-notification--warn p,
-.tox .tox-notification--warning p {
-  color: #fff;
-}
-.tox .tox-notification--warn a,
-.tox .tox-notification--warning a {
-  color: #fff;
-}
-.tox .tox-notification--warn svg,
-.tox .tox-notification--warning svg {
-  fill: #fff;
-}
-.tox .tox-notification--info {
-  background-color: #d9edf7;
-  border-color: #779ecb;
-  color: #fff;
-}
-.tox .tox-notification--info p {
-  color: #fff;
-}
-.tox .tox-notification--info a {
-  color: #fff;
-}
-.tox .tox-notification--info svg {
-  fill: #fff;
-}
-.tox .tox-notification__body {
-  -ms-grid-row-align: center;
-      align-self: center;
-  color: #fff;
-  font-size: 14px;
-  -ms-grid-column-span: 1;
-  grid-column-end: 3;
-  -ms-grid-column: 2;
-      grid-column-start: 2;
-  -ms-grid-row-span: 1;
-  grid-row-end: 2;
-  -ms-grid-row: 1;
-      grid-row-start: 1;
-  text-align: center;
-  white-space: normal;
-  word-break: break-all;
-  word-break: break-word;
-}
-.tox .tox-notification__body > * {
-  margin: 0;
-}
-.tox .tox-notification__body > * + * {
-  margin-top: 1rem;
-}
-.tox .tox-notification__icon {
-  -ms-grid-row-align: center;
-      align-self: center;
-  -ms-grid-column-span: 1;
-  grid-column-end: 2;
-  -ms-grid-column: 1;
-      grid-column-start: 1;
-  -ms-grid-row-span: 1;
-  grid-row-end: 2;
-  -ms-grid-row: 1;
-      grid-row-start: 1;
-  -ms-grid-column-align: end;
-      justify-self: end;
-}
-.tox .tox-notification__icon svg {
-  display: block;
-}
-.tox .tox-notification__dismiss {
-  -ms-grid-row-align: start;
-      align-self: start;
-  -ms-grid-column-span: 1;
-  grid-column-end: 4;
-  -ms-grid-column: 3;
-      grid-column-start: 3;
-  -ms-grid-row-span: 1;
-  grid-row-end: 2;
-  -ms-grid-row: 1;
-      grid-row-start: 1;
-  -ms-grid-column-align: end;
-      justify-self: end;
-}
-.tox .tox-notification .tox-progress-bar {
-  -ms-grid-column-span: 3;
-  grid-column-end: 4;
-  -ms-grid-column: 1;
-      grid-column-start: 1;
-  -ms-grid-row-span: 1;
-  grid-row-end: 3;
-  -ms-grid-row: 2;
-      grid-row-start: 2;
-  -ms-grid-column-align: center;
-      justify-self: center;
-}
-.tox .tox-pop {
-  display: inline-block;
-  position: relative;
-}
-.tox .tox-pop--resizing {
-  transition: width 0.1s ease;
-}
-.tox .tox-pop--resizing .tox-toolbar {
-  flex-wrap: nowrap;
-}
-.tox .tox-pop__dialog {
-  background-color: #222f3e;
-  border: 1px solid #000000;
-  border-radius: 3px;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-  min-width: 0;
-  overflow: hidden;
-}
-.tox .tox-pop__dialog > *:not(.tox-toolbar) {
-  margin: 4px 4px 4px 8px;
-}
-.tox .tox-pop__dialog .tox-toolbar {
-  background-color: transparent;
-  margin-bottom: -1px;
-}
-.tox .tox-pop::before,
-.tox .tox-pop::after {
-  border-style: solid;
-  content: '';
-  display: block;
-  height: 0;
-  position: absolute;
-  width: 0;
-}
-.tox .tox-pop.tox-pop--bottom::before,
-.tox .tox-pop.tox-pop--bottom::after {
-  left: 50%;
-  top: 100%;
-}
-.tox .tox-pop.tox-pop--bottom::after {
-  border-color: #222f3e transparent transparent transparent;
-  border-width: 8px;
-  margin-left: -8px;
-  margin-top: -1px;
-}
-.tox .tox-pop.tox-pop--bottom::before {
-  border-color: #000000 transparent transparent transparent;
-  border-width: 9px;
-  margin-left: -9px;
-}
-.tox .tox-pop.tox-pop--top::before,
-.tox .tox-pop.tox-pop--top::after {
-  left: 50%;
-  top: 0;
-  transform: translateY(-100%);
-}
-.tox .tox-pop.tox-pop--top::after {
-  border-color: transparent transparent #222f3e transparent;
-  border-width: 8px;
-  margin-left: -8px;
-  margin-top: 1px;
-}
-.tox .tox-pop.tox-pop--top::before {
-  border-color: transparent transparent #000000 transparent;
-  border-width: 9px;
-  margin-left: -9px;
-}
-.tox .tox-pop.tox-pop--left::before,
-.tox .tox-pop.tox-pop--left::after {
-  left: 0;
-  top: calc(50% - 1px);
-  transform: translateY(-50%);
-}
-.tox .tox-pop.tox-pop--left::after {
-  border-color: transparent #222f3e transparent transparent;
-  border-width: 8px;
-  margin-left: -15px;
-}
-.tox .tox-pop.tox-pop--left::before {
-  border-color: transparent #000000 transparent transparent;
-  border-width: 10px;
-  margin-left: -19px;
-}
-.tox .tox-pop.tox-pop--right::before,
-.tox .tox-pop.tox-pop--right::after {
-  left: 100%;
-  top: calc(50% + 1px);
-  transform: translateY(-50%);
-}
-.tox .tox-pop.tox-pop--right::after {
-  border-color: transparent transparent transparent #222f3e;
-  border-width: 8px;
-  margin-left: -1px;
-}
-.tox .tox-pop.tox-pop--right::before {
-  border-color: transparent transparent transparent #000000;
-  border-width: 10px;
-  margin-left: -1px;
-}
-.tox .tox-pop.tox-pop--align-left::before,
-.tox .tox-pop.tox-pop--align-left::after {
-  left: 20px;
-}
-.tox .tox-pop.tox-pop--align-right::before,
-.tox .tox-pop.tox-pop--align-right::after {
-  left: calc(100% - 20px);
-}
-.tox .tox-sidebar-wrap {
-  display: flex;
-  flex-direction: row;
-  flex-grow: 1;
-  -ms-flex-preferred-size: 0;
-  min-height: 0;
-}
-.tox .tox-sidebar {
-  background-color: #222f3e;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-end;
-}
-.tox .tox-sidebar__slider {
-  display: flex;
-  overflow: hidden;
-}
-.tox .tox-sidebar__pane-container {
-  display: flex;
-}
-.tox .tox-sidebar__pane {
-  display: flex;
-}
-.tox .tox-sidebar--sliding-closed {
-  opacity: 0;
-}
-.tox .tox-sidebar--sliding-open {
-  opacity: 1;
-}
-.tox .tox-sidebar--sliding-growing,
-.tox .tox-sidebar--sliding-shrinking {
-  transition: width 0.5s ease, opacity 0.5s ease;
-}
-.tox .tox-selector {
-  background-color: #4099ff;
-  border-color: #4099ff;
-  border-style: solid;
-  border-width: 1px;
-  box-sizing: border-box;
-  display: inline-block;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-}
-.tox.tox-platform-touch .tox-selector {
-  height: 12px;
-  width: 12px;
-}
-.tox .tox-slider {
-  align-items: center;
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 24px;
-  justify-content: center;
-  position: relative;
-}
-.tox .tox-slider__rail {
-  background-color: transparent;
-  border: 1px solid #000000;
-  border-radius: 3px;
-  height: 10px;
-  min-width: 120px;
-  width: 100%;
-}
-.tox .tox-slider__handle {
-  background-color: #207ab7;
-  border: 2px solid #185d8c;
-  border-radius: 3px;
-  box-shadow: none;
-  height: 24px;
-  left: 50%;
-  position: absolute;
-  top: 50%;
-  transform: translateX(-50%) translateY(-50%);
-  width: 14px;
-}
-.tox .tox-source-code {
-  overflow: auto;
-}
-.tox .tox-spinner {
-  display: flex;
-}
-.tox .tox-spinner > div {
-  animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;
-  background-color: rgba(255, 255, 255, 0.5);
-  border-radius: 100%;
-  height: 8px;
-  width: 8px;
-}
-.tox .tox-spinner > div:nth-child(1) {
-  animation-delay: -0.32s;
-}
-.tox .tox-spinner > div:nth-child(2) {
-  animation-delay: -0.16s;
-}
-@keyframes tam-bouncing-dots {
-  0%,
-  80%,
-  100% {
-    transform: scale(0);
-  }
-  40% {
-    transform: scale(1);
-  }
-}
-.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-spinner > div:not(:first-child) {
-  margin-right: 4px;
-}
-.tox .tox-statusbar {
-  align-items: center;
-  background-color: #222f3e;
-  border-top: 1px solid #000000;
-  color: #fff;
-  display: flex;
-  flex: 0 0 auto;
-  font-size: 12px;
-  font-weight: normal;
-  height: 18px;
-  overflow: hidden;
-  padding: 0 8px;
-  position: relative;
-  text-transform: uppercase;
-}
-.tox .tox-statusbar__text-container {
-  display: flex;
-  flex: 1 1 auto;
-  justify-content: flex-end;
-  overflow: hidden;
-}
-.tox .tox-statusbar__path {
-  display: flex;
-  flex: 1 1 auto;
-  margin-right: auto;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.tox .tox-statusbar__path > * {
-  display: inline;
-  white-space: nowrap;
-}
-.tox .tox-statusbar__wordcount {
-  flex: 0 0 auto;
-  margin-left: 1ch;
-}
-.tox .tox-statusbar a,
-.tox .tox-statusbar__path-item,
-.tox .tox-statusbar__wordcount {
-  color: #fff;
-  text-decoration: none;
-}
-.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {
-  cursor: pointer;
-  text-decoration: underline;
-}
-.tox .tox-statusbar__resize-handle {
-  align-items: flex-end;
-  align-self: stretch;
-  cursor: nwse-resize;
-  display: flex;
-  flex: 0 0 auto;
-  justify-content: flex-end;
-  margin-left: auto;
-  margin-right: -8px;
-  padding-left: 1ch;
-}
-.tox .tox-statusbar__resize-handle svg {
-  display: block;
-  fill: #fff;
-}
-.tox:not([dir=rtl]) .tox-statusbar__path > * {
-  margin-right: 4px;
-}
-.tox:not([dir=rtl]) .tox-statusbar__branding {
-  margin-left: 1ch;
-}
-.tox[dir=rtl] .tox-statusbar {
-  flex-direction: row-reverse;
-}
-.tox[dir=rtl] .tox-statusbar__path > * {
-  margin-left: 4px;
-}
-.tox .tox-throbber {
-  z-index: 1400;
-}
-.tox .tox-throbber__busy-spinner {
-  align-items: center;
-  background-color: rgba(34, 47, 62, 0.6);
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-}
-.tox .tox-tbtn {
-  align-items: center;
-  background: transparent;
-  border: 0;
-  border-radius: 3px;
-  box-shadow: none;
-  color: #fff;
-  display: flex;
-  flex: 0 0 auto;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  height: 34px;
-  justify-content: center;
-  margin: 2px 0 3px 0;
-  outline: none;
-  overflow: hidden;
-  padding: 0;
-  text-transform: none;
-  width: 34px;
-}
-.tox .tox-tbtn svg {
-  display: block;
-  fill: #fff;
-}
-.tox .tox-tbtn.tox-tbtn-more {
-  padding-left: 5px;
-  padding-right: 5px;
-  width: inherit;
-}
-.tox .tox-tbtn:focus {
-  background: #4a5562;
-  border: 0;
-  box-shadow: none;
-}
-.tox .tox-tbtn:hover {
-  background: #4a5562;
-  border: 0;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-tbtn:hover svg {
-  fill: #fff;
-}
-.tox .tox-tbtn:active {
-  background: #757d87;
-  border: 0;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-tbtn:active svg {
-  fill: #fff;
-}
-.tox .tox-tbtn--disabled,
-.tox .tox-tbtn--disabled:hover,
-.tox .tox-tbtn:disabled,
-.tox .tox-tbtn:disabled:hover {
-  background: transparent;
-  border: 0;
-  box-shadow: none;
-  color: rgba(255, 255, 255, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-tbtn--disabled svg,
-.tox .tox-tbtn--disabled:hover svg,
-.tox .tox-tbtn:disabled svg,
-.tox .tox-tbtn:disabled:hover svg {
-  /* stylelint-disable-line no-descending-specificity */
-  fill: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-tbtn--enabled,
-.tox .tox-tbtn--enabled:hover {
-  background: #757d87;
-  border: 0;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-tbtn--enabled > *,
-.tox .tox-tbtn--enabled:hover > * {
-  transform: none;
-}
-.tox .tox-tbtn--enabled svg,
-.tox .tox-tbtn--enabled:hover svg {
-  /* stylelint-disable-line no-descending-specificity */
-  fill: #fff;
-}
-.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {
-  color: #fff;
-}
-.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {
-  fill: #fff;
-}
-.tox .tox-tbtn:active > * {
-  transform: none;
-}
-.tox .tox-tbtn--md {
-  height: 51px;
-  width: 51px;
-}
-.tox .tox-tbtn--lg {
-  flex-direction: column;
-  height: 68px;
-  width: 68px;
-}
-.tox .tox-tbtn--return {
-  -ms-grid-row-align: stretch;
-      align-self: stretch;
-  height: unset;
-  width: 16px;
-}
-.tox .tox-tbtn--labeled {
-  padding: 0 4px;
-  width: unset;
-}
-.tox .tox-tbtn__vlabel {
-  display: block;
-  font-size: 10px;
-  font-weight: normal;
-  letter-spacing: -0.025em;
-  margin-bottom: 4px;
-  white-space: nowrap;
-}
-.tox .tox-tbtn--select {
-  margin: 2px 0 3px 0;
-  padding: 0 4px;
-  width: auto;
-}
-.tox .tox-tbtn__select-label {
-  cursor: default;
-  font-weight: normal;
-  margin: 0 4px;
-}
-.tox .tox-tbtn__select-chevron {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  width: 16px;
-}
-.tox .tox-tbtn__select-chevron svg {
-  fill: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-tbtn--bespoke .tox-tbtn__select-label {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  width: 7em;
-}
-.tox .tox-split-button {
-  border: 0;
-  border-radius: 3px;
-  box-sizing: border-box;
-  display: flex;
-  margin: 2px 0 3px 0;
-  overflow: hidden;
-}
-.tox .tox-split-button:hover {
-  box-shadow: 0 0 0 1px #4a5562 inset;
-}
-.tox .tox-split-button:focus {
-  background: #4a5562;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-split-button > * {
-  border-radius: 0;
-}
-.tox .tox-split-button__chevron {
-  width: 16px;
-}
-.tox .tox-split-button__chevron svg {
-  fill: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-split-button .tox-tbtn {
-  margin: 0;
-}
-.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {
-  width: 30px;
-}
-.tox.tox-platform-touch .tox-split-button__chevron {
-  width: 20px;
-}
-.tox .tox-split-button.tox-tbtn--disabled:hover,
-.tox .tox-split-button.tox-tbtn--disabled:focus,
-.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,
-.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {
-  background: transparent;
-  box-shadow: none;
-  color: rgba(255, 255, 255, 0.5);
-}
-.tox .tox-toolbar-overlord {
-  background-color: #222f3e;
-}
-.tox .tox-toolbar,
-.tox .tox-toolbar__primary,
-.tox .tox-toolbar__overflow {
-  background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;
-  background-color: #222f3e;
-  display: flex;
-  flex: 0 0 auto;
-  flex-shrink: 0;
-  flex-wrap: wrap;
-  padding: 0 0;
-}
-.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {
-  height: 0;
-  opacity: 0;
-  padding-bottom: 0;
-  padding-top: 0;
-  visibility: hidden;
-}
-.tox .tox-toolbar__overflow--growing {
-  transition: height 0.3s ease, opacity 0.2s linear 0.1s;
-}
-.tox .tox-toolbar__overflow--shrinking {
-  transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;
-}
-.tox .tox-menubar + .tox-toolbar,
-.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {
-  border-top: 1px solid #000000;
-  margin-top: -1px;
-}
-.tox .tox-toolbar--scrolling {
-  flex-wrap: nowrap;
-  overflow-x: auto;
-}
-.tox .tox-pop .tox-toolbar {
-  border-width: 0;
-}
-.tox .tox-toolbar--no-divider {
-  background-image: none;
-}
-.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,
-.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {
-  border-top: 1px solid #000000;
-}
-.tox.tox-tinymce-aux .tox-toolbar__overflow {
-  background-color: #222f3e;
-  border: 1px solid #000000;
-  border-radius: 3px;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-}
-.tox[dir=rtl] .tox-tbtn__icon-rtl svg {
-  transform: rotateY(180deg);
-}
-.tox .tox-toolbar__group {
-  align-items: center;
-  display: flex;
-  flex-wrap: wrap;
-  margin: 0 0;
-  padding: 0 4px 0 4px;
-}
-.tox .tox-toolbar__group--pull-right {
-  margin-left: auto;
-}
-.tox .tox-toolbar--scrolling .tox-toolbar__group {
-  flex-shrink: 0;
-  flex-wrap: nowrap;
-}
-.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {
-  border-right: 1px solid #000000;
-}
-.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {
-  border-left: 1px solid #000000;
-}
-.tox .tox-tooltip {
-  display: inline-block;
-  padding: 8px;
-  position: relative;
-}
-.tox .tox-tooltip__body {
-  background-color: #3d546f;
-  border-radius: 3px;
-  box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3);
-  color: rgba(255, 255, 255, 0.75);
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  padding: 4px 8px;
-  text-transform: none;
-}
-.tox .tox-tooltip__arrow {
-  position: absolute;
-}
-.tox .tox-tooltip--down .tox-tooltip__arrow {
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  border-top: 8px solid #3d546f;
-  bottom: 0;
-  left: 50%;
-  position: absolute;
-  transform: translateX(-50%);
-}
-.tox .tox-tooltip--up .tox-tooltip__arrow {
-  border-bottom: 8px solid #3d546f;
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  left: 50%;
-  position: absolute;
-  top: 0;
-  transform: translateX(-50%);
-}
-.tox .tox-tooltip--right .tox-tooltip__arrow {
-  border-bottom: 8px solid transparent;
-  border-left: 8px solid #3d546f;
-  border-top: 8px solid transparent;
-  position: absolute;
-  right: 0;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox .tox-tooltip--left .tox-tooltip__arrow {
-  border-bottom: 8px solid transparent;
-  border-right: 8px solid #3d546f;
-  border-top: 8px solid transparent;
-  left: 0;
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox .tox-well {
-  border: 1px solid #000000;
-  border-radius: 3px;
-  padding: 8px;
-  width: 100%;
-}
-.tox .tox-well > *:first-child {
-  margin-top: 0;
-}
-.tox .tox-well > *:last-child {
-  margin-bottom: 0;
-}
-.tox .tox-well > *:only-child {
-  margin: 0;
-}
-.tox .tox-custom-editor {
-  border: 1px solid #000000;
-  border-radius: 3px;
-  display: flex;
-  flex: 1;
-  position: relative;
-}
-/* stylelint-disable */
-.tox {
-  /* stylelint-enable */
-}
-.tox .tox-dialog-loading::before {
-  background-color: rgba(0, 0, 0, 0.5);
-  content: "";
-  height: 100%;
-  position: absolute;
-  width: 100%;
-  z-index: 1000;
-}
-.tox .tox-tab {
-  cursor: pointer;
-}
-.tox .tox-dialog__content-js {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dialog__body-content .tox-collection {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-image-tools-edit-panel {
-  height: 60px;
-}
-.tox .tox-image-tools__sidebar {
-  height: 60px;
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.min.css


+ 0 - 673
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.mobile.css

@@ -1,673 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-/* RESET all the things! */
-.tinymce-mobile-outer-container {
-  all: initial;
-  display: block;
-}
-.tinymce-mobile-outer-container * {
-  border: 0;
-  box-sizing: initial;
-  cursor: inherit;
-  float: none;
-  line-height: 1;
-  margin: 0;
-  outline: 0;
-  padding: 0;
-  -webkit-tap-highlight-color: transparent;
-  /* TBIO-3691, stop the gray flicker on touch. */
-  text-shadow: none;
-  white-space: nowrap;
-}
-.tinymce-mobile-icon-arrow-back::before {
-  content: "\e5cd";
-}
-.tinymce-mobile-icon-image::before {
-  content: "\e412";
-}
-.tinymce-mobile-icon-cancel-circle::before {
-  content: "\e5c9";
-}
-.tinymce-mobile-icon-full-dot::before {
-  content: "\e061";
-}
-.tinymce-mobile-icon-align-center::before {
-  content: "\e234";
-}
-.tinymce-mobile-icon-align-left::before {
-  content: "\e236";
-}
-.tinymce-mobile-icon-align-right::before {
-  content: "\e237";
-}
-.tinymce-mobile-icon-bold::before {
-  content: "\e238";
-}
-.tinymce-mobile-icon-italic::before {
-  content: "\e23f";
-}
-.tinymce-mobile-icon-unordered-list::before {
-  content: "\e241";
-}
-.tinymce-mobile-icon-ordered-list::before {
-  content: "\e242";
-}
-.tinymce-mobile-icon-font-size::before {
-  content: "\e245";
-}
-.tinymce-mobile-icon-underline::before {
-  content: "\e249";
-}
-.tinymce-mobile-icon-link::before {
-  content: "\e157";
-}
-.tinymce-mobile-icon-unlink::before {
-  content: "\eca2";
-}
-.tinymce-mobile-icon-color::before {
-  content: "\e891";
-}
-.tinymce-mobile-icon-previous::before {
-  content: "\e314";
-}
-.tinymce-mobile-icon-next::before {
-  content: "\e315";
-}
-.tinymce-mobile-icon-large-font::before,
-.tinymce-mobile-icon-style-formats::before {
-  content: "\e264";
-}
-.tinymce-mobile-icon-undo::before {
-  content: "\e166";
-}
-.tinymce-mobile-icon-redo::before {
-  content: "\e15a";
-}
-.tinymce-mobile-icon-removeformat::before {
-  content: "\e239";
-}
-.tinymce-mobile-icon-small-font::before {
-  content: "\e906";
-}
-.tinymce-mobile-icon-readonly-back::before,
-.tinymce-mobile-format-matches::after {
-  content: "\e5ca";
-}
-.tinymce-mobile-icon-small-heading::before {
-  content: "small";
-}
-.tinymce-mobile-icon-large-heading::before {
-  content: "large";
-}
-.tinymce-mobile-icon-small-heading::before,
-.tinymce-mobile-icon-large-heading::before {
-  font-family: sans-serif;
-  font-size: 80%;
-}
-.tinymce-mobile-mask-edit-icon::before {
-  content: "\e254";
-}
-.tinymce-mobile-icon-back::before {
-  content: "\e5c4";
-}
-.tinymce-mobile-icon-heading::before {
-  /* TODO: Translate */
-  content: "Headings";
-  font-family: sans-serif;
-  font-size: 80%;
-  font-weight: bold;
-}
-.tinymce-mobile-icon-h1::before {
-  content: "H1";
-  font-weight: bold;
-}
-.tinymce-mobile-icon-h2::before {
-  content: "H2";
-  font-weight: bold;
-}
-.tinymce-mobile-icon-h3::before {
-  content: "H3";
-  font-weight: bold;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  background: rgba(51, 51, 51, 0.5);
-  height: 100%;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
-  align-items: center;
-  border-radius: 50%;
-  display: flex;
-  flex-direction: column;
-  font-family: sans-serif;
-  font-size: 1em;
-  justify-content: space-between;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  border-radius: 50%;
-  height: 2.1em;
-  width: 2.1em;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  flex-direction: column;
-  font-size: 1em;
-}
-@media only screen and (min-device-width:700px) {
-  .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
-    font-size: 1.2em;
-  }
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  border-radius: 50%;
-  height: 2.1em;
-  width: 2.1em;
-  background-color: white;
-  color: #207ab7;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
-  content: "\e900";
-  font-family: 'tinymce-mobile', sans-serif;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
-  z-index: 2;
-}
-.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
-  background: #ffffff;
-  border: none;
-  bottom: 0;
-  display: flex;
-  flex-direction: column;
-  left: 0;
-  position: fixed;
-  right: 0;
-  top: 0;
-}
-.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
-  position: relative;
-}
-.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
-  display: flex;
-  flex-grow: 1;
-}
-.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
-  display: flex !important;
-  flex-grow: 1;
-  height: auto !important;
-}
-.tinymce-mobile-android-scroll-reload {
-  overflow: hidden;
-}
-:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
-  margin-top: 23px;
-}
-.tinymce-mobile-toolstrip {
-  background: #fff;
-  display: flex;
-  flex: 0 0 auto;
-  z-index: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
-  align-items: center;
-  background-color: #fff;
-  border-bottom: 1px solid #cccccc;
-  display: flex;
-  flex: 1;
-  height: 2.5em;
-  width: 100%;
-  /* Make it no larger than the toolstrip, so that it needs to scroll */
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex-shrink: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
-  background: #f44336;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
-  flex-grow: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
-  padding-left: 0.5em;
-  padding-right: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
-  align-items: center;
-  display: flex;
-  height: 80%;
-  margin-left: 2px;
-  margin-right: 2px;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
-  background: #c8cbcf;
-  color: #cccccc;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
-  background: #207ab7;
-  color: #eceff1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
-  /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex: 1;
-  padding-bottom: 0.4em;
-  padding-top: 0.4em;
-  /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
-  /* For widgets like the colour picker, use the whole height */
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
-  display: flex;
-  min-height: 1.5em;
-  overflow: hidden;
-  padding-left: 0;
-  padding-right: 0;
-  position: relative;
-  width: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
-  display: flex;
-  height: 100%;
-  transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
-  width: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
-  display: flex;
-  flex: 0 0 auto;
-  justify-content: space-between;
-  width: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
-  font-family: Sans-serif;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
-  display: flex;
-  flex-grow: 1;
-  position: relative;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
-  -ms-grid-row-align: center;
-      align-self: center;
-  background: inherit;
-  border: none;
-  border-radius: 50%;
-  color: #888;
-  font-size: 0.6em;
-  font-weight: bold;
-  height: 100%;
-  padding-right: 2px;
-  position: absolute;
-  right: 0;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
-  display: none;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
-  align-items: center;
-  display: flex;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
-  align-items: center;
-  display: flex;
-  font-weight: bold;
-  height: 100%;
-  padding-left: 0.5em;
-  padding-right: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
-  visibility: hidden;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
-  color: #cccccc;
-  font-size: 10px;
-  line-height: 10px;
-  margin: 0 2px;
-  padding-top: 3px;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
-  color: #c8cbcf;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
-  margin-left: 0.5em;
-  margin-right: 0.9em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
-  margin-left: 0.9em;
-  margin-right: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
-  display: flex;
-  flex: 1;
-  margin-left: 0;
-  margin-right: 0;
-  padding: 0.28em 0;
-  position: relative;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
-  align-items: center;
-  display: flex;
-  flex-grow: 1;
-  height: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
-  background: #cccccc;
-  display: flex;
-  flex: 1;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
-  padding-left: 2em;
-  padding-right: 2em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
-  align-items: center;
-  display: flex;
-  flex-grow: 1;
-  height: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
-  background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
-  display: flex;
-  flex: 1;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
-  /* Not part of theming */
-  background: black;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-  width: 1.2em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
-  /* Not part of theming */
-  background: white;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-  width: 1.2em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
-  /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
-     * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
-     * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
-     * this approach.
-    */
-  align-items: center;
-  background-clip: padding-box;
-  background-color: #455a64;
-  border: 0.5em solid rgba(136, 136, 136, 0);
-  border-radius: 3em;
-  bottom: 0;
-  color: #fff;
-  display: flex;
-  height: 0.5em;
-  justify-content: center;
-  left: -10px;
-  margin: auto;
-  position: absolute;
-  top: 0;
-  transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
-  width: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
-  border: 0.5em solid rgba(136, 136, 136, 0.39);
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
-  flex-direction: column;
-  justify-content: center;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
-  align-items: center;
-  display: flex;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
-  height: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
-  display: flex;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
-  background: #ffffff;
-  border: none;
-  border-radius: 0;
-  color: #455a64;
-  flex-grow: 1;
-  font-size: 0.85em;
-  padding-bottom: 0.1em;
-  padding-left: 5px;
-  padding-top: 0.1em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
-  /* WebKit, Blink, Edge */
-  color: #888;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
-  /* WebKit, Blink, Edge */
-  color: #888;
-}
-/* dropup */
-.tinymce-mobile-dropup {
-  background: white;
-  display: flex;
-  overflow: hidden;
-  width: 100%;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
-  transition: height 0.3s ease-out;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
-  transition: height 0.3s ease-in;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
-  flex-grow: 0;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
-  flex-grow: 1;
-}
-/* TODO min-height for device size and orientation */
-.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
-  min-height: 200px;
-}
-@media only screen and (orientation: landscape) {
-  .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
-    min-height: 200px;
-  }
-}
-@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
-  .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
-    min-height: 150px;
-  }
-}
-/* styles menu */
-.tinymce-mobile-styles-menu {
-  font-family: sans-serif;
-  outline: 4px solid black;
-  overflow: hidden;
-  position: relative;
-  width: 100%;
-}
-.tinymce-mobile-styles-menu [role="menu"] {
-  display: flex;
-  flex-direction: column;
-  height: 100%;
-  position: absolute;
-  width: 100%;
-}
-.tinymce-mobile-styles-menu [role="menu"].transitioning {
-  transition: transform 0.5s ease-in-out;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
-  border-bottom: 1px solid #ddd;
-  color: #455a64;
-  cursor: pointer;
-  display: flex;
-  padding: 1em 1em;
-  position: relative;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
-  color: #455a64;
-  content: "\e314";
-  font-family: 'tinymce-mobile', sans-serif;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
-  color: #455a64;
-  content: "\e315";
-  font-family: 'tinymce-mobile', sans-serif;
-  padding-left: 1em;
-  padding-right: 1em;
-  position: absolute;
-  right: 0;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
-  font-family: 'tinymce-mobile', sans-serif;
-  padding-left: 1em;
-  padding-right: 1em;
-  position: absolute;
-  right: 0;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
-  align-items: center;
-  background: #fff;
-  border-top: #455a64;
-  color: #455a64;
-  display: flex;
-  min-height: 2.5em;
-  padding-left: 1em;
-  padding-right: 1em;
-}
-.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
-.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
-  transform: translate(-100%);
-}
-.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
-.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
-  transform: translate(0%);
-}
-.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
-.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
-  transform: translate(100%);
-}
-@font-face {
-  font-family: 'tinymce-mobile';
-  font-style: normal;
-  font-weight: normal;
-  src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
-}
-@media (min-device-width: 700px) {
-  .tinymce-mobile-outer-container,
-  .tinymce-mobile-outer-container input {
-    font-size: 25px;
-  }
-}
-@media (max-device-width: 700px) {
-  .tinymce-mobile-outer-container,
-  .tinymce-mobile-outer-container input {
-    font-size: 18px;
-  }
-}
-.tinymce-mobile-icon {
-  font-family: 'tinymce-mobile', sans-serif;
-}
-.mixin-flex-and-centre {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-.mixin-flex-bar {
-  align-items: center;
-  display: flex;
-  height: 100%;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
-  background-color: #fff;
-  width: 100%;
-}
-.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
-  /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
-  background-color: #207ab7;
-  border-radius: 50%;
-  bottom: 1em;
-  color: white;
-  font-size: 1em;
-  height: 2.1em;
-  position: fixed;
-  right: 2em;
-  width: 2.1em;
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-@media only screen and (min-device-width:700px) {
-  .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
-    font-size: 1.2em;
-  }
-}
-.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
-  height: 300px;
-  overflow: hidden;
-}
-.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
-  height: 100%;
-}
-.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
-  display: none;
-}
-/*
-  Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
-  increased and the whole body becomes scrollable. It's important!
- */
-input[type="file"]::-webkit-file-upload-button {
-  display: none;
-}
-@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
-  .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
-    bottom: 50%;
-  }
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide-dark/skin.mobile.min.css


+ 0 - 695
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.css

@@ -1,695 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  cursor: default;
-  display: inline-block;
-  height: 12px !important;
-  padding: 0 2px;
-  -webkit-user-modify: read-only;
-  -moz-user-modify: read-only;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-      user-select: all;
-  width: 8px !important;
-}
-.mce-content-body .mce-item-anchor[data-mce-selected] {
-  outline-offset: 1px;
-}
-.tox-comments-visible .tox-comment {
-  background-color: #fff0b7;
-}
-.tox-comments-visible .tox-comment--active {
-  background-color: #ffe168;
-}
-.tox-checklist > li:not(.tox-checklist--hidden) {
-  list-style: none;
-  margin: 0.25em 0;
-}
-.tox-checklist > li:not(.tox-checklist--hidden)::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-  background-size: 100%;
-  content: '';
-  cursor: pointer;
-  height: 1em;
-  margin-left: -1.5em;
-  margin-top: 0.125em;
-  position: absolute;
-  width: 1em;
-}
-.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-}
-[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
-  margin-left: 0;
-  margin-right: -1.5em;
-}
-/* stylelint-disable */
-/* http://prismjs.com/ */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: black;
-  background: none;
-  text-shadow: 0 1px white;
-  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-  font-size: 1em;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.5;
-  -moz-tab-size: 4;
-  tab-size: 4;
-  -webkit-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-pre[class*="language-"]::-moz-selection,
-pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection,
-code[class*="language-"] ::-moz-selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-pre[class*="language-"]::selection,
-pre[class*="language-"] ::selection,
-code[class*="language-"]::selection,
-code[class*="language-"] ::selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-@media print {
-  code[class*="language-"],
-  pre[class*="language-"] {
-    text-shadow: none;
-  }
-}
-/* Code blocks */
-pre[class*="language-"] {
-  padding: 1em;
-  margin: 0.5em 0;
-  overflow: auto;
-}
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-  background: #f5f2f0;
-}
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: 0.1em;
-  border-radius: 0.3em;
-  white-space: normal;
-}
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-  color: slategray;
-}
-.token.punctuation {
-  color: #999;
-}
-.namespace {
-  opacity: 0.7;
-}
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-  color: #905;
-}
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-  color: #690;
-}
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-  color: #9a6e3a;
-  background: hsla(0, 0%, 100%, 0.5);
-}
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-  color: #07a;
-}
-.token.function,
-.token.class-name {
-  color: #DD4A68;
-}
-.token.regex,
-.token.important,
-.token.variable {
-  color: #e90;
-}
-.token.important,
-.token.bold {
-  font-weight: bold;
-}
-.token.italic {
-  font-style: italic;
-}
-.token.entity {
-  cursor: help;
-}
-/* stylelint-enable */
-.mce-content-body {
-  overflow-wrap: break-word;
-  word-wrap: break-word;
-}
-.mce-content-body .mce-visual-caret {
-  background-color: black;
-  background-color: currentColor;
-  position: absolute;
-}
-.mce-content-body .mce-visual-caret-hidden {
-  display: none;
-}
-.mce-content-body *[data-mce-caret] {
-  left: -1000px;
-  margin: 0;
-  padding: 0;
-  position: absolute;
-  right: auto;
-  top: 0;
-}
-.mce-content-body .mce-offscreen-selection {
-  left: -2000000px;
-  max-width: 1000000px;
-  position: absolute;
-}
-.mce-content-body *[contentEditable=false] {
-  cursor: default;
-}
-.mce-content-body *[contentEditable=true] {
-  cursor: text;
-}
-.tox-cursor-format-painter {
-  cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
-}
-.mce-content-body figure.align-left {
-  float: left;
-}
-.mce-content-body figure.align-right {
-  float: right;
-}
-.mce-content-body figure.image.align-center {
-  display: table;
-  margin-left: auto;
-  margin-right: auto;
-}
-.mce-preview-object {
-  border: 1px solid gray;
-  display: inline-block;
-  line-height: 0;
-  margin: 0 2px 0 2px;
-  position: relative;
-}
-.mce-preview-object .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-preview-object[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.mce-object {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  border: 1px dashed #aaa;
-}
-.mce-pagebreak {
-  border: 1px dashed #aaa;
-  cursor: default;
-  display: block;
-  height: 5px;
-  margin-top: 15px;
-  page-break-before: always;
-  width: 100%;
-}
-@media print {
-  .mce-pagebreak {
-    border: 0;
-  }
-}
-.tiny-pageembed .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tiny-pageembed[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.tiny-pageembed {
-  display: inline-block;
-  position: relative;
-}
-.tiny-pageembed--21by9,
-.tiny-pageembed--16by9,
-.tiny-pageembed--4by3,
-.tiny-pageembed--1by1 {
-  display: block;
-  overflow: hidden;
-  padding: 0;
-  position: relative;
-  width: 100%;
-}
-.tiny-pageembed--21by9 {
-  padding-top: 42.857143%;
-}
-.tiny-pageembed--16by9 {
-  padding-top: 56.25%;
-}
-.tiny-pageembed--4by3 {
-  padding-top: 75%;
-}
-.tiny-pageembed--1by1 {
-  padding-top: 100%;
-}
-.tiny-pageembed--21by9 iframe,
-.tiny-pageembed--16by9 iframe,
-.tiny-pageembed--4by3 iframe,
-.tiny-pageembed--1by1 iframe {
-  border: 0;
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-content-body[data-mce-placeholder] {
-  position: relative;
-}
-.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  color: rgba(34, 47, 62, 0.7);
-  content: attr(data-mce-placeholder);
-  position: absolute;
-}
-.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  left: 1px;
-}
-.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
-  right: 1px;
-}
-.mce-content-body div.mce-resizehandle {
-  background-color: #4099ff;
-  border-color: #4099ff;
-  border-style: solid;
-  border-width: 1px;
-  box-sizing: border-box;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-  z-index: 10000;
-}
-.mce-content-body div.mce-resizehandle:hover {
-  background-color: #4099ff;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(1) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(2) {
-  cursor: nesw-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(3) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(4) {
-  cursor: nesw-resize;
-}
-.mce-content-body .mce-clonedresizable {
-  opacity: 0.5;
-  outline: 1px dashed black;
-  position: absolute;
-  z-index: 10000;
-}
-.mce-content-body .mce-resize-helper {
-  background: #555;
-  background: rgba(0, 0, 0, 0.75);
-  border: 1px;
-  border-radius: 3px;
-  color: white;
-  display: none;
-  font-family: sans-serif;
-  font-size: 12px;
-  line-height: 14px;
-  margin: 5px 10px;
-  padding: 5px;
-  position: absolute;
-  white-space: nowrap;
-  z-index: 10001;
-}
-.tox-rtc-user-selection {
-  position: relative;
-}
-.tox-rtc-user-cursor {
-  bottom: 0;
-  cursor: default;
-  position: absolute;
-  top: 0;
-  width: 2px;
-}
-.tox-rtc-user-cursor::before {
-  background-color: inherit;
-  border-radius: 50%;
-  content: '';
-  display: block;
-  height: 8px;
-  position: absolute;
-  right: -3px;
-  top: -3px;
-  width: 8px;
-}
-.tox-rtc-user-cursor:hover::after {
-  background-color: inherit;
-  border-radius: 100px;
-  box-sizing: border-box;
-  color: #fff;
-  content: attr(data-user);
-  display: block;
-  font-size: 12px;
-  font-weight: bold;
-  left: -5px;
-  min-height: 8px;
-  min-width: 8px;
-  padding: 0 12px;
-  position: absolute;
-  top: -11px;
-  white-space: nowrap;
-  z-index: 1000;
-}
-.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
-  background-color: #2dc26b;
-}
-.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
-  background-color: #e03e2d;
-}
-.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
-  background-color: #f1c40f;
-}
-.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
-  background-color: #3598db;
-}
-.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
-  background-color: #b96ad9;
-}
-.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
-  background-color: #e67e23;
-}
-.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
-  background-color: #aaa69d;
-}
-.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
-  background-color: #f368e0;
-}
-.tox-rtc-remote-image {
-  background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
-  border: 1px solid #ccc;
-  min-height: 240px;
-  min-width: 320px;
-}
-.mce-match-marker {
-  background: #aaa;
-  color: #fff;
-}
-.mce-match-marker-selected {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::-moz-selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-content-body img[data-mce-selected],
-.mce-content-body table[data-mce-selected] {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body hr[data-mce-selected] {
-  outline: 3px solid #b4d7ff;
-  outline-offset: 1px;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body *[contentEditable=false][data-mce-selected] {
-  cursor: not-allowed;
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
-.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
-  outline: none;
-}
-.mce-content-body *[data-mce-selected="inline-boundary"] {
-  background-color: #b4d7ff;
-}
-.mce-content-body .mce-edit-focus {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body td[data-mce-selected],
-.mce-content-body th[data-mce-selected] {
-  background-color: #b4d7ff !important;
-}
-.mce-content-body td[data-mce-selected]::-moz-selection,
-.mce-content-body th[data-mce-selected]::-moz-selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected]::selection,
-.mce-content-body th[data-mce-selected]::selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected] *,
-.mce-content-body th[data-mce-selected] * {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.mce-content-body img::-moz-selection {
-  background: none;
-}
-.mce-content-body img::selection {
-  background: none;
-}
-.ephox-snooker-resizer-bar {
-  background-color: #b4d7ff;
-  opacity: 0;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.ephox-snooker-resizer-cols {
-  cursor: col-resize;
-}
-.ephox-snooker-resizer-rows {
-  cursor: row-resize;
-}
-.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
-  opacity: 1;
-}
-.mce-spellchecker-word {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-  height: 2rem;
-}
-.mce-spellchecker-grammar {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-}
-.mce-toc {
-  border: 1px solid gray;
-}
-.mce-toc h2 {
-  margin: 4px;
-}
-.mce-toc li {
-  list-style-type: none;
-}
-.mce-item-table,
-.mce-item-table td,
-.mce-item-table th,
-.mce-item-table caption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks p,
-.mce-visualblocks h1,
-.mce-visualblocks h2,
-.mce-visualblocks h3,
-.mce-visualblocks h4,
-.mce-visualblocks h5,
-.mce-visualblocks h6,
-.mce-visualblocks div:not([data-mce-bogus]),
-.mce-visualblocks section,
-.mce-visualblocks article,
-.mce-visualblocks blockquote,
-.mce-visualblocks address,
-.mce-visualblocks pre,
-.mce-visualblocks figure,
-.mce-visualblocks figcaption,
-.mce-visualblocks hgroup,
-.mce-visualblocks aside,
-.mce-visualblocks ul,
-.mce-visualblocks ol,
-.mce-visualblocks dl {
-  background-repeat: no-repeat;
-  border: 1px dashed #bbb;
-  margin-left: 3px;
-  padding-top: 10px;
-}
-.mce-visualblocks p {
-  background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
-}
-.mce-visualblocks h1 {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
-}
-.mce-visualblocks h2 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
-}
-.mce-visualblocks h3 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
-}
-.mce-visualblocks h4 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
-}
-.mce-visualblocks h5 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
-}
-.mce-visualblocks h6 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
-}
-.mce-visualblocks div:not([data-mce-bogus]) {
-  background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
-}
-.mce-visualblocks section {
-  background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
-}
-.mce-visualblocks article {
-  background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
-}
-.mce-visualblocks blockquote {
-  background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
-}
-.mce-visualblocks address {
-  background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
-}
-.mce-visualblocks pre {
-  background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
-}
-.mce-visualblocks figure {
-  background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
-}
-.mce-visualblocks figcaption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks hgroup {
-  background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
-}
-.mce-visualblocks aside {
-  background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
-}
-.mce-visualblocks ul {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
-}
-.mce-visualblocks ol {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
-}
-.mce-visualblocks dl {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
-}
-.mce-visualblocks:not([dir=rtl]) p,
-.mce-visualblocks:not([dir=rtl]) h1,
-.mce-visualblocks:not([dir=rtl]) h2,
-.mce-visualblocks:not([dir=rtl]) h3,
-.mce-visualblocks:not([dir=rtl]) h4,
-.mce-visualblocks:not([dir=rtl]) h5,
-.mce-visualblocks:not([dir=rtl]) h6,
-.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
-.mce-visualblocks:not([dir=rtl]) section,
-.mce-visualblocks:not([dir=rtl]) article,
-.mce-visualblocks:not([dir=rtl]) blockquote,
-.mce-visualblocks:not([dir=rtl]) address,
-.mce-visualblocks:not([dir=rtl]) pre,
-.mce-visualblocks:not([dir=rtl]) figure,
-.mce-visualblocks:not([dir=rtl]) figcaption,
-.mce-visualblocks:not([dir=rtl]) hgroup,
-.mce-visualblocks:not([dir=rtl]) aside,
-.mce-visualblocks:not([dir=rtl]) ul,
-.mce-visualblocks:not([dir=rtl]) ol,
-.mce-visualblocks:not([dir=rtl]) dl {
-  margin-left: 3px;
-}
-.mce-visualblocks[dir=rtl] p,
-.mce-visualblocks[dir=rtl] h1,
-.mce-visualblocks[dir=rtl] h2,
-.mce-visualblocks[dir=rtl] h3,
-.mce-visualblocks[dir=rtl] h4,
-.mce-visualblocks[dir=rtl] h5,
-.mce-visualblocks[dir=rtl] h6,
-.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
-.mce-visualblocks[dir=rtl] section,
-.mce-visualblocks[dir=rtl] article,
-.mce-visualblocks[dir=rtl] blockquote,
-.mce-visualblocks[dir=rtl] address,
-.mce-visualblocks[dir=rtl] pre,
-.mce-visualblocks[dir=rtl] figure,
-.mce-visualblocks[dir=rtl] figcaption,
-.mce-visualblocks[dir=rtl] hgroup,
-.mce-visualblocks[dir=rtl] aside,
-.mce-visualblocks[dir=rtl] ul,
-.mce-visualblocks[dir=rtl] ol,
-.mce-visualblocks[dir=rtl] dl {
-  background-position-x: right;
-  margin-right: 3px;
-}
-.mce-nbsp,
-.mce-shy {
-  background: #aaa;
-}
-.mce-shy::after {
-  content: '-';
-}
-body {
-  font-family: sans-serif;
-}
-table {
-  border-collapse: collapse;
-}

+ 0 - 689
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.inline.css

@@ -1,689 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  cursor: default;
-  display: inline-block;
-  height: 12px !important;
-  padding: 0 2px;
-  -webkit-user-modify: read-only;
-  -moz-user-modify: read-only;
-  -webkit-user-select: all;
-  -moz-user-select: all;
-  -ms-user-select: all;
-      user-select: all;
-  width: 8px !important;
-}
-.mce-content-body .mce-item-anchor[data-mce-selected] {
-  outline-offset: 1px;
-}
-.tox-comments-visible .tox-comment {
-  background-color: #fff0b7;
-}
-.tox-comments-visible .tox-comment--active {
-  background-color: #ffe168;
-}
-.tox-checklist > li:not(.tox-checklist--hidden) {
-  list-style: none;
-  margin: 0.25em 0;
-}
-.tox-checklist > li:not(.tox-checklist--hidden)::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-  background-size: 100%;
-  content: '';
-  cursor: pointer;
-  height: 1em;
-  margin-left: -1.5em;
-  margin-top: 0.125em;
-  position: absolute;
-  width: 1em;
-}
-.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
-}
-[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
-  margin-left: 0;
-  margin-right: -1.5em;
-}
-/* stylelint-disable */
-/* http://prismjs.com/ */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: black;
-  background: none;
-  text-shadow: 0 1px white;
-  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-  font-size: 1em;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.5;
-  -moz-tab-size: 4;
-  tab-size: 4;
-  -webkit-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-pre[class*="language-"]::-moz-selection,
-pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection,
-code[class*="language-"] ::-moz-selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-pre[class*="language-"]::selection,
-pre[class*="language-"] ::selection,
-code[class*="language-"]::selection,
-code[class*="language-"] ::selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-@media print {
-  code[class*="language-"],
-  pre[class*="language-"] {
-    text-shadow: none;
-  }
-}
-/* Code blocks */
-pre[class*="language-"] {
-  padding: 1em;
-  margin: 0.5em 0;
-  overflow: auto;
-}
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-  background: #f5f2f0;
-}
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: 0.1em;
-  border-radius: 0.3em;
-  white-space: normal;
-}
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-  color: slategray;
-}
-.token.punctuation {
-  color: #999;
-}
-.namespace {
-  opacity: 0.7;
-}
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-  color: #905;
-}
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-  color: #690;
-}
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-  color: #9a6e3a;
-  background: hsla(0, 0%, 100%, 0.5);
-}
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-  color: #07a;
-}
-.token.function,
-.token.class-name {
-  color: #DD4A68;
-}
-.token.regex,
-.token.important,
-.token.variable {
-  color: #e90;
-}
-.token.important,
-.token.bold {
-  font-weight: bold;
-}
-.token.italic {
-  font-style: italic;
-}
-.token.entity {
-  cursor: help;
-}
-/* stylelint-enable */
-.mce-content-body {
-  overflow-wrap: break-word;
-  word-wrap: break-word;
-}
-.mce-content-body .mce-visual-caret {
-  background-color: black;
-  background-color: currentColor;
-  position: absolute;
-}
-.mce-content-body .mce-visual-caret-hidden {
-  display: none;
-}
-.mce-content-body *[data-mce-caret] {
-  left: -1000px;
-  margin: 0;
-  padding: 0;
-  position: absolute;
-  right: auto;
-  top: 0;
-}
-.mce-content-body .mce-offscreen-selection {
-  left: -2000000px;
-  max-width: 1000000px;
-  position: absolute;
-}
-.mce-content-body *[contentEditable=false] {
-  cursor: default;
-}
-.mce-content-body *[contentEditable=true] {
-  cursor: text;
-}
-.tox-cursor-format-painter {
-  cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
-}
-.mce-content-body figure.align-left {
-  float: left;
-}
-.mce-content-body figure.align-right {
-  float: right;
-}
-.mce-content-body figure.image.align-center {
-  display: table;
-  margin-left: auto;
-  margin-right: auto;
-}
-.mce-preview-object {
-  border: 1px solid gray;
-  display: inline-block;
-  line-height: 0;
-  margin: 0 2px 0 2px;
-  position: relative;
-}
-.mce-preview-object .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-preview-object[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.mce-object {
-  background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
-  border: 1px dashed #aaa;
-}
-.mce-pagebreak {
-  border: 1px dashed #aaa;
-  cursor: default;
-  display: block;
-  height: 5px;
-  margin-top: 15px;
-  page-break-before: always;
-  width: 100%;
-}
-@media print {
-  .mce-pagebreak {
-    border: 0;
-  }
-}
-.tiny-pageembed .mce-shim {
-  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tiny-pageembed[data-mce-selected="2"] .mce-shim {
-  display: none;
-}
-.tiny-pageembed {
-  display: inline-block;
-  position: relative;
-}
-.tiny-pageembed--21by9,
-.tiny-pageembed--16by9,
-.tiny-pageembed--4by3,
-.tiny-pageembed--1by1 {
-  display: block;
-  overflow: hidden;
-  padding: 0;
-  position: relative;
-  width: 100%;
-}
-.tiny-pageembed--21by9 {
-  padding-top: 42.857143%;
-}
-.tiny-pageembed--16by9 {
-  padding-top: 56.25%;
-}
-.tiny-pageembed--4by3 {
-  padding-top: 75%;
-}
-.tiny-pageembed--1by1 {
-  padding-top: 100%;
-}
-.tiny-pageembed--21by9 iframe,
-.tiny-pageembed--16by9 iframe,
-.tiny-pageembed--4by3 iframe,
-.tiny-pageembed--1by1 iframe {
-  border: 0;
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.mce-content-body[data-mce-placeholder] {
-  position: relative;
-}
-.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  color: rgba(34, 47, 62, 0.7);
-  content: attr(data-mce-placeholder);
-  position: absolute;
-}
-.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
-  left: 1px;
-}
-.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
-  right: 1px;
-}
-.mce-content-body div.mce-resizehandle {
-  background-color: #4099ff;
-  border-color: #4099ff;
-  border-style: solid;
-  border-width: 1px;
-  box-sizing: border-box;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-  z-index: 10000;
-}
-.mce-content-body div.mce-resizehandle:hover {
-  background-color: #4099ff;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(1) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(2) {
-  cursor: nesw-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(3) {
-  cursor: nwse-resize;
-}
-.mce-content-body div.mce-resizehandle:nth-of-type(4) {
-  cursor: nesw-resize;
-}
-.mce-content-body .mce-clonedresizable {
-  opacity: 0.5;
-  outline: 1px dashed black;
-  position: absolute;
-  z-index: 10000;
-}
-.mce-content-body .mce-resize-helper {
-  background: #555;
-  background: rgba(0, 0, 0, 0.75);
-  border: 1px;
-  border-radius: 3px;
-  color: white;
-  display: none;
-  font-family: sans-serif;
-  font-size: 12px;
-  line-height: 14px;
-  margin: 5px 10px;
-  padding: 5px;
-  position: absolute;
-  white-space: nowrap;
-  z-index: 10001;
-}
-.tox-rtc-user-selection {
-  position: relative;
-}
-.tox-rtc-user-cursor {
-  bottom: 0;
-  cursor: default;
-  position: absolute;
-  top: 0;
-  width: 2px;
-}
-.tox-rtc-user-cursor::before {
-  background-color: inherit;
-  border-radius: 50%;
-  content: '';
-  display: block;
-  height: 8px;
-  position: absolute;
-  right: -3px;
-  top: -3px;
-  width: 8px;
-}
-.tox-rtc-user-cursor:hover::after {
-  background-color: inherit;
-  border-radius: 100px;
-  box-sizing: border-box;
-  color: #fff;
-  content: attr(data-user);
-  display: block;
-  font-size: 12px;
-  font-weight: bold;
-  left: -5px;
-  min-height: 8px;
-  min-width: 8px;
-  padding: 0 12px;
-  position: absolute;
-  top: -11px;
-  white-space: nowrap;
-  z-index: 1000;
-}
-.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
-  background-color: #2dc26b;
-}
-.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
-  background-color: #e03e2d;
-}
-.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
-  background-color: #f1c40f;
-}
-.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
-  background-color: #3598db;
-}
-.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
-  background-color: #b96ad9;
-}
-.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
-  background-color: #e67e23;
-}
-.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
-  background-color: #aaa69d;
-}
-.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
-  background-color: #f368e0;
-}
-.tox-rtc-remote-image {
-  background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
-  border: 1px solid #ccc;
-  min-height: 240px;
-  min-width: 320px;
-}
-.mce-match-marker {
-  background: #aaa;
-  color: #fff;
-}
-.mce-match-marker-selected {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::-moz-selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-match-marker-selected::selection {
-  background: #39f;
-  color: #fff;
-}
-.mce-content-body img[data-mce-selected],
-.mce-content-body table[data-mce-selected] {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body hr[data-mce-selected] {
-  outline: 3px solid #b4d7ff;
-  outline-offset: 1px;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body *[contentEditable=false][data-mce-selected] {
-  cursor: not-allowed;
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
-.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
-  outline: none;
-}
-.mce-content-body *[data-mce-selected="inline-boundary"] {
-  background-color: #b4d7ff;
-}
-.mce-content-body .mce-edit-focus {
-  outline: 3px solid #b4d7ff;
-}
-.mce-content-body td[data-mce-selected],
-.mce-content-body th[data-mce-selected] {
-  background-color: #b4d7ff !important;
-}
-.mce-content-body td[data-mce-selected]::-moz-selection,
-.mce-content-body th[data-mce-selected]::-moz-selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected]::selection,
-.mce-content-body th[data-mce-selected]::selection {
-  background: none;
-}
-.mce-content-body td[data-mce-selected] *,
-.mce-content-body th[data-mce-selected] * {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.mce-content-body img::-moz-selection {
-  background: none;
-}
-.mce-content-body img::selection {
-  background: none;
-}
-.ephox-snooker-resizer-bar {
-  background-color: #b4d7ff;
-  opacity: 0;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.ephox-snooker-resizer-cols {
-  cursor: col-resize;
-}
-.ephox-snooker-resizer-rows {
-  cursor: row-resize;
-}
-.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
-  opacity: 1;
-}
-.mce-spellchecker-word {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-  height: 2rem;
-}
-.mce-spellchecker-grammar {
-  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
-  background-position: 0 calc(100% + 1px);
-  background-repeat: repeat-x;
-  background-size: auto 6px;
-  cursor: default;
-}
-.mce-toc {
-  border: 1px solid gray;
-}
-.mce-toc h2 {
-  margin: 4px;
-}
-.mce-toc li {
-  list-style-type: none;
-}
-.mce-item-table,
-.mce-item-table td,
-.mce-item-table th,
-.mce-item-table caption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks p,
-.mce-visualblocks h1,
-.mce-visualblocks h2,
-.mce-visualblocks h3,
-.mce-visualblocks h4,
-.mce-visualblocks h5,
-.mce-visualblocks h6,
-.mce-visualblocks div:not([data-mce-bogus]),
-.mce-visualblocks section,
-.mce-visualblocks article,
-.mce-visualblocks blockquote,
-.mce-visualblocks address,
-.mce-visualblocks pre,
-.mce-visualblocks figure,
-.mce-visualblocks figcaption,
-.mce-visualblocks hgroup,
-.mce-visualblocks aside,
-.mce-visualblocks ul,
-.mce-visualblocks ol,
-.mce-visualblocks dl {
-  background-repeat: no-repeat;
-  border: 1px dashed #bbb;
-  margin-left: 3px;
-  padding-top: 10px;
-}
-.mce-visualblocks p {
-  background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
-}
-.mce-visualblocks h1 {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
-}
-.mce-visualblocks h2 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
-}
-.mce-visualblocks h3 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
-}
-.mce-visualblocks h4 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
-}
-.mce-visualblocks h5 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
-}
-.mce-visualblocks h6 {
-  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
-}
-.mce-visualblocks div:not([data-mce-bogus]) {
-  background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
-}
-.mce-visualblocks section {
-  background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
-}
-.mce-visualblocks article {
-  background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
-}
-.mce-visualblocks blockquote {
-  background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
-}
-.mce-visualblocks address {
-  background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
-}
-.mce-visualblocks pre {
-  background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
-}
-.mce-visualblocks figure {
-  background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
-}
-.mce-visualblocks figcaption {
-  border: 1px dashed #bbb;
-}
-.mce-visualblocks hgroup {
-  background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
-}
-.mce-visualblocks aside {
-  background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
-}
-.mce-visualblocks ul {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
-}
-.mce-visualblocks ol {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
-}
-.mce-visualblocks dl {
-  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
-}
-.mce-visualblocks:not([dir=rtl]) p,
-.mce-visualblocks:not([dir=rtl]) h1,
-.mce-visualblocks:not([dir=rtl]) h2,
-.mce-visualblocks:not([dir=rtl]) h3,
-.mce-visualblocks:not([dir=rtl]) h4,
-.mce-visualblocks:not([dir=rtl]) h5,
-.mce-visualblocks:not([dir=rtl]) h6,
-.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
-.mce-visualblocks:not([dir=rtl]) section,
-.mce-visualblocks:not([dir=rtl]) article,
-.mce-visualblocks:not([dir=rtl]) blockquote,
-.mce-visualblocks:not([dir=rtl]) address,
-.mce-visualblocks:not([dir=rtl]) pre,
-.mce-visualblocks:not([dir=rtl]) figure,
-.mce-visualblocks:not([dir=rtl]) figcaption,
-.mce-visualblocks:not([dir=rtl]) hgroup,
-.mce-visualblocks:not([dir=rtl]) aside,
-.mce-visualblocks:not([dir=rtl]) ul,
-.mce-visualblocks:not([dir=rtl]) ol,
-.mce-visualblocks:not([dir=rtl]) dl {
-  margin-left: 3px;
-}
-.mce-visualblocks[dir=rtl] p,
-.mce-visualblocks[dir=rtl] h1,
-.mce-visualblocks[dir=rtl] h2,
-.mce-visualblocks[dir=rtl] h3,
-.mce-visualblocks[dir=rtl] h4,
-.mce-visualblocks[dir=rtl] h5,
-.mce-visualblocks[dir=rtl] h6,
-.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
-.mce-visualblocks[dir=rtl] section,
-.mce-visualblocks[dir=rtl] article,
-.mce-visualblocks[dir=rtl] blockquote,
-.mce-visualblocks[dir=rtl] address,
-.mce-visualblocks[dir=rtl] pre,
-.mce-visualblocks[dir=rtl] figure,
-.mce-visualblocks[dir=rtl] figcaption,
-.mce-visualblocks[dir=rtl] hgroup,
-.mce-visualblocks[dir=rtl] aside,
-.mce-visualblocks[dir=rtl] ul,
-.mce-visualblocks[dir=rtl] ol,
-.mce-visualblocks[dir=rtl] dl {
-  background-position-x: right;
-  margin-right: 3px;
-}
-.mce-nbsp,
-.mce-shy {
-  background: #aaa;
-}
-.mce-shy::after {
-  content: '-';
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.inline.min.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.min.css


+ 0 - 29
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.mobile.css

@@ -1,29 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
-  /* Note: this file is used inside the content, so isn't part of theming */
-  background-color: green;
-  display: inline-block;
-  opacity: 0.5;
-  position: absolute;
-}
-body {
-  -webkit-text-size-adjust: none;
-}
-body img {
-  /* this is related to the content margin */
-  max-width: 96vw;
-}
-body table img {
-  max-width: 95%;
-}
-body {
-  font-family: sans-serif;
-}
-table {
-  border-collapse: collapse;
-}

+ 0 - 7
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/content.mobile.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

BIN
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/fonts/tinymce-mobile.woff


+ 0 - 2897
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.css

@@ -1,2897 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tox {
-  box-sizing: content-box;
-  color: #222f3e;
-  cursor: auto;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 16px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: normal;
-  -webkit-tap-highlight-color: transparent;
-  text-decoration: none;
-  text-shadow: none;
-  text-transform: none;
-  vertical-align: initial;
-  white-space: normal;
-}
-.tox *:not(svg):not(rect) {
-  box-sizing: inherit;
-  color: inherit;
-  cursor: inherit;
-  direction: inherit;
-  font-family: inherit;
-  font-size: inherit;
-  font-style: inherit;
-  font-weight: inherit;
-  line-height: inherit;
-  -webkit-tap-highlight-color: inherit;
-  text-align: inherit;
-  text-decoration: inherit;
-  text-shadow: inherit;
-  text-transform: inherit;
-  vertical-align: inherit;
-  white-space: inherit;
-}
-.tox *:not(svg):not(rect) {
-  /* stylelint-disable-line no-duplicate-selectors */
-  background: transparent;
-  border: 0;
-  float: none;
-  height: auto;
-  margin: 0;
-  max-width: none;
-  outline: 0;
-  padding: 0;
-  position: static;
-  width: auto;
-}
-.tox:not([dir=rtl]) {
-  direction: ltr;
-  text-align: left;
-}
-.tox[dir=rtl] {
-  direction: rtl;
-  text-align: right;
-}
-.tox-tinymce {
-  border: 1px solid #cccccc;
-  border-radius: 0;
-  box-shadow: none;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: column;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  overflow: hidden;
-  position: relative;
-  visibility: inherit !important;
-}
-.tox-tinymce-inline {
-  border: none;
-  box-shadow: none;
-}
-.tox-tinymce-inline .tox-editor-header {
-  border: 1px solid #cccccc;
-  border-radius: 0;
-  box-shadow: none;
-}
-.tox-tinymce-aux {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  z-index: 1300;
-}
-.tox-tinymce *:focus,
-.tox-tinymce-aux *:focus {
-  outline: none;
-}
-button::-moz-focus-inner {
-  border: 0;
-}
-.tox .accessibility-issue__header {
-  align-items: center;
-  display: flex;
-  margin-bottom: 4px;
-}
-.tox .accessibility-issue__description {
-  align-items: stretch;
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  display: flex;
-  justify-content: space-between;
-}
-.tox .accessibility-issue__description > div {
-  padding-bottom: 4px;
-}
-.tox .accessibility-issue__description > div > div {
-  align-items: center;
-  display: flex;
-  margin-bottom: 4px;
-}
-.tox .accessibility-issue__description > *:last-child:not(:only-child) {
-  border-color: #cccccc;
-  border-style: solid;
-}
-.tox .accessibility-issue__repair {
-  margin-top: 16px;
-}
-.tox .accessibility-issue--info .accessibility-issue__description {
-  background-color: rgba(32, 122, 183, 0.1);
-  border-color: rgba(32, 122, 183, 0.4);
-  color: #222f3e;
-}
-.tox .accessibility-issue--info .accessibility-issue__description > *:last-child {
-  border-color: rgba(32, 122, 183, 0.4);
-}
-.tox .accessibility-issue--info h2 {
-  color: #207ab7;
-}
-.tox .accessibility-issue--info .tox-icon svg {
-  fill: #207ab7;
-}
-.tox .accessibility-issue--info a .tox-icon {
-  color: #207ab7;
-}
-.tox .accessibility-issue--warn .accessibility-issue__description {
-  background-color: rgba(255, 165, 0, 0.1);
-  border-color: rgba(255, 165, 0, 0.5);
-  color: #222f3e;
-}
-.tox .accessibility-issue--warn .accessibility-issue__description > *:last-child {
-  border-color: rgba(255, 165, 0, 0.5);
-}
-.tox .accessibility-issue--warn h2 {
-  color: #cc8500;
-}
-.tox .accessibility-issue--warn .tox-icon svg {
-  fill: #cc8500;
-}
-.tox .accessibility-issue--warn a .tox-icon {
-  color: #cc8500;
-}
-.tox .accessibility-issue--error .accessibility-issue__description {
-  background-color: rgba(204, 0, 0, 0.1);
-  border-color: rgba(204, 0, 0, 0.4);
-  color: #222f3e;
-}
-.tox .accessibility-issue--error .accessibility-issue__description > *:last-child {
-  border-color: rgba(204, 0, 0, 0.4);
-}
-.tox .accessibility-issue--error h2 {
-  color: #c00;
-}
-.tox .accessibility-issue--error .tox-icon svg {
-  fill: #c00;
-}
-.tox .accessibility-issue--error a .tox-icon {
-  color: #c00;
-}
-.tox .accessibility-issue--success .accessibility-issue__description {
-  background-color: rgba(120, 171, 70, 0.1);
-  border-color: rgba(120, 171, 70, 0.4);
-  color: #222f3e;
-}
-.tox .accessibility-issue--success .accessibility-issue__description > *:last-child {
-  border-color: rgba(120, 171, 70, 0.4);
-}
-.tox .accessibility-issue--success h2 {
-  color: #78AB46;
-}
-.tox .accessibility-issue--success .tox-icon svg {
-  fill: #78AB46;
-}
-.tox .accessibility-issue--success a .tox-icon {
-  color: #78AB46;
-}
-.tox .tox-dialog__body-content .accessibility-issue__header h1,
-.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {
-  margin-top: 0;
-}
-.tox:not([dir=rtl]) .accessibility-issue__header .tox-button {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .accessibility-issue__header > *:nth-last-child(2) {
-  margin-left: auto;
-}
-.tox:not([dir=rtl]) .accessibility-issue__description {
-  padding: 4px 4px 4px 8px;
-}
-.tox:not([dir=rtl]) .accessibility-issue__description > *:last-child {
-  border-left-width: 1px;
-  padding-left: 4px;
-}
-.tox[dir=rtl] .accessibility-issue__header .tox-button {
-  margin-right: 4px;
-}
-.tox[dir=rtl] .accessibility-issue__header > *:nth-last-child(2) {
-  margin-right: auto;
-}
-.tox[dir=rtl] .accessibility-issue__description {
-  padding: 4px 8px 4px 4px;
-}
-.tox[dir=rtl] .accessibility-issue__description > *:last-child {
-  border-right-width: 1px;
-  padding-right: 4px;
-}
-.tox .tox-anchorbar {
-  display: flex;
-  flex: 0 0 auto;
-}
-.tox .tox-bar {
-  display: flex;
-  flex: 0 0 auto;
-}
-.tox .tox-button {
-  background-color: #207ab7;
-  background-image: none;
-  background-position: 0 0;
-  background-repeat: repeat;
-  border-color: #207ab7;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  color: #fff;
-  cursor: pointer;
-  display: inline-block;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 14px;
-  font-weight: bold;
-  letter-spacing: normal;
-  line-height: 24px;
-  margin: 0;
-  outline: none;
-  padding: 4px 16px;
-  text-align: center;
-  text-decoration: none;
-  text-transform: capitalize;
-  white-space: nowrap;
-}
-.tox .tox-button[disabled] {
-  background-color: #207ab7;
-  background-image: none;
-  border-color: #207ab7;
-  box-shadow: none;
-  color: rgba(255, 255, 255, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-button:focus:not(:disabled) {
-  background-color: #1c6ca1;
-  background-image: none;
-  border-color: #1c6ca1;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button:hover:not(:disabled) {
-  background-color: #1c6ca1;
-  background-image: none;
-  border-color: #1c6ca1;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button:active:not(:disabled) {
-  background-color: #185d8c;
-  background-image: none;
-  border-color: #185d8c;
-  box-shadow: none;
-  color: #fff;
-}
-.tox .tox-button--secondary {
-  background-color: #f0f0f0;
-  background-image: none;
-  background-position: 0 0;
-  background-repeat: repeat;
-  border-color: #f0f0f0;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  color: #222f3e;
-  outline: none;
-  padding: 4px 16px;
-  text-decoration: none;
-  text-transform: capitalize;
-}
-.tox .tox-button--secondary[disabled] {
-  background-color: #f0f0f0;
-  background-image: none;
-  border-color: #f0f0f0;
-  box-shadow: none;
-  color: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-button--secondary:focus:not(:disabled) {
-  background-color: #e3e3e3;
-  background-image: none;
-  border-color: #e3e3e3;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-button--secondary:hover:not(:disabled) {
-  background-color: #e3e3e3;
-  background-image: none;
-  border-color: #e3e3e3;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-button--secondary:active:not(:disabled) {
-  background-color: #d6d6d6;
-  background-image: none;
-  border-color: #d6d6d6;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-button--icon,
-.tox .tox-button.tox-button--icon,
-.tox .tox-button.tox-button--secondary.tox-button--icon {
-  padding: 4px;
-}
-.tox .tox-button--icon .tox-icon svg,
-.tox .tox-button.tox-button--icon .tox-icon svg,
-.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {
-  display: block;
-  fill: currentColor;
-}
-.tox .tox-button-link {
-  background: 0;
-  border: none;
-  box-sizing: border-box;
-  cursor: pointer;
-  display: inline-block;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 16px;
-  font-weight: normal;
-  line-height: 1.3;
-  margin: 0;
-  padding: 0;
-  white-space: nowrap;
-}
-.tox .tox-button-link--sm {
-  font-size: 14px;
-}
-.tox .tox-button--naked {
-  background-color: transparent;
-  border-color: transparent;
-  box-shadow: unset;
-  color: #222f3e;
-}
-.tox .tox-button--naked[disabled] {
-  background-color: #f0f0f0;
-  border-color: #f0f0f0;
-  box-shadow: none;
-  color: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-button--naked:hover:not(:disabled) {
-  background-color: #e3e3e3;
-  border-color: #e3e3e3;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-button--naked:focus:not(:disabled) {
-  background-color: #e3e3e3;
-  border-color: #e3e3e3;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-button--naked:active:not(:disabled) {
-  background-color: #d6d6d6;
-  border-color: #d6d6d6;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-button--naked .tox-icon svg {
-  fill: currentColor;
-}
-.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
-  color: #222f3e;
-}
-.tox .tox-checkbox {
-  align-items: center;
-  border-radius: 3px;
-  cursor: pointer;
-  display: flex;
-  height: 36px;
-  min-width: 36px;
-}
-.tox .tox-checkbox__input {
-  /* Hide from view but visible to screen readers */
-  height: 1px;
-  overflow: hidden;
-  position: absolute;
-  top: auto;
-  width: 1px;
-}
-.tox .tox-checkbox__icons {
-  align-items: center;
-  border-radius: 3px;
-  box-shadow: 0 0 0 2px transparent;
-  box-sizing: content-box;
-  display: flex;
-  height: 24px;
-  justify-content: center;
-  padding: calc(4px - 1px);
-  width: 24px;
-}
-.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  display: block;
-  fill: rgba(34, 47, 62, 0.3);
-}
-.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
-  display: none;
-  fill: #207ab7;
-}
-.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {
-  display: none;
-  fill: #207ab7;
-}
-.tox .tox-checkbox--disabled {
-  color: rgba(34, 47, 62, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {
-  fill: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  fill: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
-  fill: rgba(34, 47, 62, 0.5);
-}
-.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  display: none;
-}
-.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {
-  display: block;
-}
-.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
-  display: none;
-}
-.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
-  display: block;
-}
-.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
-  border-radius: 3px;
-  box-shadow: inset 0 0 0 1px #207ab7;
-  padding: calc(4px - 1px);
-}
-.tox:not([dir=rtl]) .tox-checkbox__label {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .tox-checkbox__input {
-  left: -10000px;
-}
-.tox:not([dir=rtl]) .tox-bar .tox-checkbox {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-checkbox__label {
-  margin-right: 4px;
-}
-.tox[dir=rtl] .tox-checkbox__input {
-  right: -10000px;
-}
-.tox[dir=rtl] .tox-bar .tox-checkbox {
-  margin-right: 4px;
-}
-.tox {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox .tox-collection--toolbar .tox-collection__group {
-  display: flex;
-  padding: 0;
-}
-.tox .tox-collection--grid .tox-collection__group {
-  display: flex;
-  flex-wrap: wrap;
-  max-height: 208px;
-  overflow-x: hidden;
-  overflow-y: auto;
-  padding: 0;
-}
-.tox .tox-collection--list .tox-collection__group {
-  border-bottom-width: 0;
-  border-color: #cccccc;
-  border-left-width: 0;
-  border-right-width: 0;
-  border-style: solid;
-  border-top-width: 1px;
-  padding: 4px 0;
-}
-.tox .tox-collection--list .tox-collection__group:first-child {
-  border-top-width: 0;
-}
-.tox .tox-collection__group-heading {
-  background-color: #e6e6e6;
-  color: rgba(34, 47, 62, 0.7);
-  cursor: default;
-  font-size: 12px;
-  font-style: normal;
-  font-weight: normal;
-  margin-bottom: 4px;
-  margin-top: -4px;
-  padding: 4px 8px;
-  text-transform: none;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.tox .tox-collection__item {
-  align-items: center;
-  color: #222f3e;
-  cursor: pointer;
-  display: flex;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.tox .tox-collection--list .tox-collection__item {
-  padding: 4px 8px;
-}
-.tox .tox-collection--toolbar .tox-collection__item {
-  border-radius: 3px;
-  padding: 4px;
-}
-.tox .tox-collection--grid .tox-collection__item {
-  border-radius: 3px;
-  padding: 4px;
-}
-.tox .tox-collection--list .tox-collection__item--enabled {
-  background-color: #fff;
-  color: #222f3e;
-}
-.tox .tox-collection--list .tox-collection__item--active {
-  background-color: #dee0e2;
-}
-.tox .tox-collection--toolbar .tox-collection__item--enabled {
-  background-color: #c8cbcf;
-  color: #222f3e;
-}
-.tox .tox-collection--toolbar .tox-collection__item--active {
-  background-color: #dee0e2;
-}
-.tox .tox-collection--grid .tox-collection__item--enabled {
-  background-color: #c8cbcf;
-  color: #222f3e;
-}
-.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
-  background-color: #dee0e2;
-  color: #222f3e;
-}
-.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
-  color: #222f3e;
-}
-.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
-  color: #222f3e;
-}
-.tox .tox-collection__item--state-disabled {
-  background-color: transparent;
-  color: rgba(34, 47, 62, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-collection__item-icon,
-.tox .tox-collection__item-checkmark {
-  align-items: center;
-  display: flex;
-  height: 24px;
-  justify-content: center;
-  width: 24px;
-}
-.tox .tox-collection__item-icon svg,
-.tox .tox-collection__item-checkmark svg {
-  fill: currentColor;
-}
-.tox .tox-collection--toolbar-lg .tox-collection__item-icon {
-  height: 48px;
-  width: 48px;
-}
-.tox .tox-collection__item-label {
-  color: currentColor;
-  display: inline-block;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 24px;
-  text-transform: none;
-  word-break: break-all;
-}
-.tox .tox-collection__item-accessory {
-  color: rgba(34, 47, 62, 0.7);
-  display: inline-block;
-  font-size: 14px;
-  height: 24px;
-  line-height: 24px;
-  text-transform: none;
-}
-.tox .tox-collection__item-caret {
-  align-items: center;
-  display: flex;
-  min-height: 24px;
-}
-.tox .tox-collection__item-caret::after {
-  content: '';
-  font-size: 0;
-  min-height: inherit;
-}
-.tox .tox-collection__item-caret svg {
-  fill: #222f3e;
-}
-.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {
-  display: none;
-}
-.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {
-  display: none;
-}
-.tox .tox-collection--horizontal {
-  background-color: #fff;
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-  display: flex;
-  flex: 0 0 auto;
-  flex-shrink: 0;
-  flex-wrap: nowrap;
-  margin-bottom: 0;
-  overflow-x: auto;
-  padding: 0;
-}
-.tox .tox-collection--horizontal .tox-collection__group {
-  align-items: center;
-  display: flex;
-  flex-wrap: nowrap;
-  margin: 0;
-  padding: 0 4px;
-}
-.tox .tox-collection--horizontal .tox-collection__item {
-  height: 34px;
-  margin: 2px 0 3px 0;
-  padding: 0 4px;
-}
-.tox .tox-collection--horizontal .tox-collection__item-label {
-  white-space: nowrap;
-}
-.tox .tox-collection--horizontal .tox-collection__item-caret {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
-  border-right: 1px solid #cccccc;
-}
-.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {
-  margin-left: 8px;
-}
-.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child {
-  margin-left: 4px;
-}
-.tox:not([dir=rtl]) .tox-collection__item-accessory {
-  margin-left: 16px;
-  text-align: right;
-}
-.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {
-  margin-left: 16px;
-}
-.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
-  border-left: 1px solid #cccccc;
-}
-.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {
-  margin-right: 8px;
-}
-.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child {
-  margin-right: 4px;
-}
-.tox[dir=rtl] .tox-collection__item-icon-rtl {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {
-  transform: rotateY(180deg);
-}
-.tox[dir=rtl] .tox-collection__item-accessory {
-  margin-right: 16px;
-  text-align: left;
-}
-.tox[dir=rtl] .tox-collection .tox-collection__item-caret {
-  margin-right: 16px;
-  transform: rotateY(180deg);
-}
-.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {
-  margin-right: 4px;
-}
-.tox .tox-color-picker-container {
-  display: flex;
-  flex-direction: row;
-  height: 225px;
-  margin: 0;
-}
-.tox .tox-sv-palette {
-  box-sizing: border-box;
-  display: flex;
-  height: 100%;
-}
-.tox .tox-sv-palette-spectrum {
-  height: 100%;
-}
-.tox .tox-sv-palette,
-.tox .tox-sv-palette-spectrum {
-  width: 225px;
-}
-.tox .tox-sv-palette-thumb {
-  background: none;
-  border: 1px solid black;
-  border-radius: 50%;
-  box-sizing: content-box;
-  height: 12px;
-  position: absolute;
-  width: 12px;
-}
-.tox .tox-sv-palette-inner-thumb {
-  border: 1px solid white;
-  border-radius: 50%;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-}
-.tox .tox-hue-slider {
-  box-sizing: border-box;
-  height: 100%;
-  width: 25px;
-}
-.tox .tox-hue-slider-spectrum {
-  background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);
-  height: 100%;
-  width: 100%;
-}
-.tox .tox-hue-slider,
-.tox .tox-hue-slider-spectrum {
-  width: 20px;
-}
-.tox .tox-hue-slider-thumb {
-  background: white;
-  border: 1px solid black;
-  box-sizing: content-box;
-  height: 4px;
-  width: 100%;
-}
-.tox .tox-rgb-form {
-  display: flex;
-  flex-direction: column;
-  justify-content: space-between;
-}
-.tox .tox-rgb-form div {
-  align-items: center;
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 5px;
-  width: inherit;
-}
-.tox .tox-rgb-form input {
-  width: 6em;
-}
-.tox .tox-rgb-form input.tox-invalid {
-  /* Need !important to override Chrome's focus styling unfortunately */
-  border: 1px solid red !important;
-}
-.tox .tox-rgb-form .tox-rgba-preview {
-  border: 1px solid black;
-  flex-grow: 2;
-  margin-bottom: 0;
-}
-.tox:not([dir=rtl]) .tox-sv-palette {
-  margin-right: 15px;
-}
-.tox:not([dir=rtl]) .tox-hue-slider {
-  margin-right: 15px;
-}
-.tox:not([dir=rtl]) .tox-hue-slider-thumb {
-  margin-left: -1px;
-}
-.tox:not([dir=rtl]) .tox-rgb-form label {
-  margin-right: 0.5em;
-}
-.tox[dir=rtl] .tox-sv-palette {
-  margin-left: 15px;
-}
-.tox[dir=rtl] .tox-hue-slider {
-  margin-left: 15px;
-}
-.tox[dir=rtl] .tox-hue-slider-thumb {
-  margin-right: -1px;
-}
-.tox[dir=rtl] .tox-rgb-form label {
-  margin-left: 0.5em;
-}
-.tox .tox-toolbar .tox-swatches,
-.tox .tox-toolbar__primary .tox-swatches,
-.tox .tox-toolbar__overflow .tox-swatches {
-  margin: 2px 0 3px 4px;
-}
-.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {
-  border: 0;
-  margin: -4px 0;
-}
-.tox .tox-swatches__row {
-  display: flex;
-}
-.tox .tox-swatch {
-  height: 30px;
-  transition: transform 0.15s, box-shadow 0.15s;
-  width: 30px;
-}
-.tox .tox-swatch:hover,
-.tox .tox-swatch:focus {
-  box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;
-  transform: scale(0.8);
-}
-.tox .tox-swatch--remove {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-.tox .tox-swatch--remove svg path {
-  stroke: #e74c3c;
-}
-.tox .tox-swatches__picker-btn {
-  align-items: center;
-  background-color: transparent;
-  border: 0;
-  cursor: pointer;
-  display: flex;
-  height: 30px;
-  justify-content: center;
-  outline: none;
-  padding: 0;
-  width: 30px;
-}
-.tox .tox-swatches__picker-btn svg {
-  height: 24px;
-  width: 24px;
-}
-.tox .tox-swatches__picker-btn:hover {
-  background: #dee0e2;
-}
-.tox:not([dir=rtl]) .tox-swatches__picker-btn {
-  margin-left: auto;
-}
-.tox[dir=rtl] .tox-swatches__picker-btn {
-  margin-right: auto;
-}
-.tox .tox-comment-thread {
-  background: #fff;
-  position: relative;
-}
-.tox .tox-comment-thread > *:not(:first-child) {
-  margin-top: 8px;
-}
-.tox .tox-comment {
-  background: #fff;
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
-  padding: 8px 8px 16px 8px;
-  position: relative;
-}
-.tox .tox-comment__header {
-  align-items: center;
-  color: #222f3e;
-  display: flex;
-  justify-content: space-between;
-}
-.tox .tox-comment__date {
-  color: rgba(34, 47, 62, 0.7);
-  font-size: 12px;
-}
-.tox .tox-comment__body {
-  color: #222f3e;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  margin-top: 8px;
-  position: relative;
-  text-transform: initial;
-}
-.tox .tox-comment__body textarea {
-  resize: none;
-  white-space: normal;
-  width: 100%;
-}
-.tox .tox-comment__expander {
-  padding-top: 8px;
-}
-.tox .tox-comment__expander p {
-  color: rgba(34, 47, 62, 0.7);
-  font-size: 14px;
-  font-style: normal;
-}
-.tox .tox-comment__body p {
-  margin: 0;
-}
-.tox .tox-comment__buttonspacing {
-  padding-top: 16px;
-  text-align: center;
-}
-.tox .tox-comment-thread__overlay::after {
-  background: #fff;
-  bottom: 0;
-  content: "";
-  display: flex;
-  left: 0;
-  opacity: 0.9;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 5;
-}
-.tox .tox-comment__reply {
-  display: flex;
-  flex-shrink: 0;
-  flex-wrap: wrap;
-  justify-content: flex-end;
-  margin-top: 8px;
-}
-.tox .tox-comment__reply > *:first-child {
-  margin-bottom: 8px;
-  width: 100%;
-}
-.tox .tox-comment__edit {
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: flex-end;
-  margin-top: 16px;
-}
-.tox .tox-comment__gradient::after {
-  background: linear-gradient(rgba(255, 255, 255, 0), #fff);
-  bottom: 0;
-  content: "";
-  display: block;
-  height: 5em;
-  margin-top: -40px;
-  position: absolute;
-  width: 100%;
-}
-.tox .tox-comment__overlay {
-  background: #fff;
-  bottom: 0;
-  display: flex;
-  flex-direction: column;
-  flex-grow: 1;
-  left: 0;
-  opacity: 0.9;
-  position: absolute;
-  right: 0;
-  text-align: center;
-  top: 0;
-  z-index: 5;
-}
-.tox .tox-comment__loading-text {
-  align-items: center;
-  color: #222f3e;
-  display: flex;
-  flex-direction: column;
-  position: relative;
-}
-.tox .tox-comment__loading-text > div {
-  padding-bottom: 16px;
-}
-.tox .tox-comment__overlaytext {
-  bottom: 0;
-  flex-direction: column;
-  font-size: 14px;
-  left: 0;
-  padding: 1em;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 10;
-}
-.tox .tox-comment__overlaytext p {
-  background-color: #fff;
-  box-shadow: 0 0 8px 8px #fff;
-  color: #222f3e;
-  text-align: center;
-}
-.tox .tox-comment__overlaytext div:nth-of-type(2) {
-  font-size: 0.8em;
-}
-.tox .tox-comment__busy-spinner {
-  align-items: center;
-  background-color: #fff;
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 20;
-}
-.tox .tox-comment__scroll {
-  display: flex;
-  flex-direction: column;
-  flex-shrink: 1;
-  overflow: auto;
-}
-.tox .tox-conversations {
-  margin: 8px;
-}
-.tox:not([dir=rtl]) .tox-comment__edit {
-  margin-left: 8px;
-}
-.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,
-.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,
-.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-comment__edit {
-  margin-right: 8px;
-}
-.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,
-.tox[dir=rtl] .tox-comment__edit > *:last-child,
-.tox[dir=rtl] .tox-comment__reply > *:last-child {
-  margin-right: 8px;
-}
-.tox .tox-user {
-  align-items: center;
-  display: flex;
-}
-.tox .tox-user__avatar svg {
-  fill: rgba(34, 47, 62, 0.7);
-}
-.tox .tox-user__name {
-  color: rgba(34, 47, 62, 0.7);
-  font-size: 12px;
-  font-style: normal;
-  font-weight: bold;
-  text-transform: uppercase;
-}
-.tox:not([dir=rtl]) .tox-user__avatar svg {
-  margin-right: 8px;
-}
-.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-user__avatar svg {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-user__avatar + .tox-user__name {
-  margin-right: 8px;
-}
-.tox .tox-dialog-wrap {
-  align-items: center;
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: fixed;
-  right: 0;
-  top: 0;
-  z-index: 1100;
-}
-.tox .tox-dialog-wrap__backdrop {
-  background-color: rgba(255, 255, 255, 0.75);
-  bottom: 0;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 1;
-}
-.tox .tox-dialog-wrap__backdrop--opaque {
-  background-color: #fff;
-}
-.tox .tox-dialog {
-  background-color: #fff;
-  border-color: #cccccc;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15);
-  display: flex;
-  flex-direction: column;
-  max-height: 100%;
-  max-width: 480px;
-  overflow: hidden;
-  position: relative;
-  width: 95vw;
-  z-index: 2;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox .tox-dialog {
-    align-self: flex-start;
-    margin: 8px auto;
-    width: calc(100vw - 16px);
-  }
-}
-.tox .tox-dialog-inline {
-  z-index: 1100;
-}
-.tox .tox-dialog__header {
-  align-items: center;
-  background-color: #fff;
-  border-bottom: none;
-  color: #222f3e;
-  display: flex;
-  font-size: 16px;
-  justify-content: space-between;
-  padding: 8px 16px 0 16px;
-  position: relative;
-}
-.tox .tox-dialog__header .tox-button {
-  z-index: 1;
-}
-.tox .tox-dialog__draghandle {
-  cursor: grab;
-  height: 100%;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tox .tox-dialog__draghandle:active {
-  cursor: grabbing;
-}
-.tox .tox-dialog__dismiss {
-  margin-left: auto;
-}
-.tox .tox-dialog__title {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 20px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  margin: 0;
-  text-transform: none;
-}
-.tox .tox-dialog__body {
-  color: #222f3e;
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  font-size: 16px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  min-width: 0;
-  text-align: left;
-  text-transform: none;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox .tox-dialog__body {
-    flex-direction: column;
-  }
-}
-.tox .tox-dialog__body-nav {
-  align-items: flex-start;
-  display: flex;
-  flex-direction: column;
-  padding: 16px 16px;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {
-    flex-direction: row;
-    -webkit-overflow-scrolling: touch;
-    overflow-x: auto;
-    padding-bottom: 0;
-  }
-}
-.tox .tox-dialog__body-nav-item {
-  border-bottom: 2px solid transparent;
-  color: rgba(34, 47, 62, 0.7);
-  display: inline-block;
-  font-size: 14px;
-  line-height: 1.3;
-  margin-bottom: 8px;
-  text-decoration: none;
-  white-space: nowrap;
-}
-.tox .tox-dialog__body-nav-item:focus {
-  background-color: rgba(32, 122, 183, 0.1);
-}
-.tox .tox-dialog__body-nav-item--active {
-  border-bottom: 2px solid #207ab7;
-  color: #207ab7;
-}
-.tox .tox-dialog__body-content {
-  box-sizing: border-box;
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-  max-height: 650px;
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-  padding: 16px 16px;
-}
-.tox .tox-dialog__body-content > * {
-  margin-bottom: 0;
-  margin-top: 16px;
-}
-.tox .tox-dialog__body-content > *:first-child {
-  margin-top: 0;
-}
-.tox .tox-dialog__body-content > *:last-child {
-  margin-bottom: 0;
-}
-.tox .tox-dialog__body-content > *:only-child {
-  margin-bottom: 0;
-  margin-top: 0;
-}
-.tox .tox-dialog__body-content a {
-  color: #207ab7;
-  cursor: pointer;
-  text-decoration: none;
-}
-.tox .tox-dialog__body-content a:hover,
-.tox .tox-dialog__body-content a:focus {
-  color: #185d8c;
-  text-decoration: none;
-}
-.tox .tox-dialog__body-content a:active {
-  color: #185d8c;
-  text-decoration: none;
-}
-.tox .tox-dialog__body-content svg {
-  fill: #222f3e;
-}
-.tox .tox-dialog__body-content ul {
-  display: block;
-  list-style-type: disc;
-  margin-bottom: 16px;
-  -webkit-margin-end: 0;
-          margin-inline-end: 0;
-  -webkit-margin-start: 0;
-          margin-inline-start: 0;
-  -webkit-padding-start: 2.5rem;
-          padding-inline-start: 2.5rem;
-}
-.tox .tox-dialog__body-content .tox-form__group h1 {
-  font-size: 20px;
-  font-weight: bold;
-  margin-bottom: 16px;
-  margin-top: 2rem;
-}
-.tox .tox-dialog__body-content .tox-form__group h2 {
-  font-size: 16px;
-  font-weight: bold;
-  margin-bottom: 16px;
-  margin-top: 2rem;
-}
-.tox .tox-dialog__body-content .tox-form__group p {
-  margin-bottom: 16px;
-}
-.tox .tox-dialog__body-content .tox-form__group h1:first-child,
-.tox .tox-dialog__body-content .tox-form__group h2:first-child,
-.tox .tox-dialog__body-content .tox-form__group p:first-child {
-  margin-top: 0;
-}
-.tox .tox-dialog__body-content .tox-form__group h1:last-child,
-.tox .tox-dialog__body-content .tox-form__group h2:last-child,
-.tox .tox-dialog__body-content .tox-form__group p:last-child {
-  margin-bottom: 0;
-}
-.tox .tox-dialog__body-content .tox-form__group h1:only-child,
-.tox .tox-dialog__body-content .tox-form__group h2:only-child,
-.tox .tox-dialog__body-content .tox-form__group p:only-child {
-  margin-bottom: 0;
-  margin-top: 0;
-}
-.tox .tox-dialog--width-lg {
-  height: 650px;
-  max-width: 1200px;
-}
-.tox .tox-dialog--width-md {
-  max-width: 800px;
-}
-.tox .tox-dialog--width-md .tox-dialog__body-content {
-  overflow: auto;
-}
-.tox .tox-dialog__body-content--centered {
-  text-align: center;
-}
-.tox .tox-dialog__footer {
-  align-items: center;
-  background-color: #fff;
-  border-top: 1px solid #cccccc;
-  display: flex;
-  justify-content: space-between;
-  padding: 8px 16px;
-}
-.tox .tox-dialog__footer-start,
-.tox .tox-dialog__footer-end {
-  display: flex;
-}
-.tox .tox-dialog__busy-spinner {
-  align-items: center;
-  background-color: rgba(255, 255, 255, 0.75);
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-  z-index: 3;
-}
-.tox .tox-dialog__table {
-  border-collapse: collapse;
-  width: 100%;
-}
-.tox .tox-dialog__table thead th {
-  font-weight: bold;
-  padding-bottom: 8px;
-}
-.tox .tox-dialog__table tbody tr {
-  border-bottom: 1px solid #cccccc;
-}
-.tox .tox-dialog__table tbody tr:last-child {
-  border-bottom: none;
-}
-.tox .tox-dialog__table td {
-  padding-bottom: 8px;
-  padding-top: 8px;
-}
-.tox .tox-dialog__popups {
-  position: absolute;
-  width: 100%;
-  z-index: 1100;
-}
-.tox .tox-dialog__body-iframe {
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dialog__body-iframe .tox-navobj {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 100%;
-}
-.tox .tox-dialog-dock-fadeout {
-  opacity: 0;
-  visibility: hidden;
-}
-.tox .tox-dialog-dock-fadein {
-  opacity: 1;
-  visibility: visible;
-}
-.tox .tox-dialog-dock-transition {
-  transition: visibility 0s linear 0.3s, opacity 0.3s ease;
-}
-.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {
-  transition-delay: 0s;
-}
-body.tox-dialog__disable-scroll {
-  overflow: hidden;
-}
-.tox.tox-platform-ie {
-  /* IE11 CSS styles go here */
-}
-.tox.tox-platform-ie .tox-dialog-wrap {
-  position: -ms-device-fixed;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {
-    margin-right: 0;
-  }
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {
-    margin-left: 8px;
-  }
-}
-.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,
-.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {
-  margin-left: 8px;
-}
-.tox[dir=rtl] .tox-dialog__body {
-  text-align: right;
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {
-    margin-left: 0;
-  }
-}
-@media only screen and (max-width:767px) {
-  body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {
-    margin-right: 8px;
-  }
-}
-.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,
-.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {
-  margin-right: 8px;
-}
-.tox .tox-dropzone-container {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dropzone {
-  align-items: center;
-  background: #fff;
-  border: 2px dashed #cccccc;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: column;
-  flex-grow: 1;
-  justify-content: center;
-  min-height: 100px;
-  padding: 10px;
-}
-.tox .tox-dropzone p {
-  color: rgba(34, 47, 62, 0.7);
-  margin: 0 0 16px 0;
-}
-.tox .tox-edit-area {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  overflow: hidden;
-  position: relative;
-}
-.tox .tox-edit-area__iframe {
-  background-color: #fff;
-  border: 0;
-  box-sizing: border-box;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 100%;
-  position: absolute;
-  width: 100%;
-}
-.tox.tox-inline-edit-area {
-  border: 1px dotted #cccccc;
-}
-.tox .tox-editor-container {
-  display: flex;
-  flex: 1 1 auto;
-  flex-direction: column;
-  overflow: hidden;
-}
-.tox .tox-editor-header {
-  z-index: 1;
-}
-.tox:not(.tox-tinymce-inline) .tox-editor-header {
-  box-shadow: none;
-  transition: box-shadow 0.5s;
-}
-.tox.tox-tinymce--toolbar-bottom .tox-editor-header,
-.tox.tox-tinymce-inline .tox-editor-header {
-  margin-bottom: -1px;
-}
-.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
-  box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);
-}
-.tox-editor-dock-fadeout {
-  opacity: 0;
-  visibility: hidden;
-}
-.tox-editor-dock-fadein {
-  opacity: 1;
-  visibility: visible;
-}
-.tox-editor-dock-transition {
-  transition: visibility 0s linear 0.25s, opacity 0.25s ease;
-}
-.tox-editor-dock-transition.tox-editor-dock-fadein {
-  transition-delay: 0s;
-}
-.tox .tox-control-wrap {
-  flex: 1;
-  position: relative;
-}
-.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,
-.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,
-.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {
-  display: none;
-}
-.tox .tox-control-wrap svg {
-  display: block;
-}
-.tox .tox-control-wrap__status-icon-wrap {
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox .tox-control-wrap__status-icon-invalid svg {
-  fill: #c00;
-}
-.tox .tox-control-wrap__status-icon-unknown svg {
-  fill: orange;
-}
-.tox .tox-control-wrap__status-icon-valid svg {
-  fill: green;
-}
-.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,
-.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,
-.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {
-  padding-right: 32px;
-}
-.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {
-  right: 4px;
-}
-.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,
-.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,
-.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {
-  padding-left: 32px;
-}
-.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {
-  left: 4px;
-}
-.tox .tox-autocompleter {
-  max-width: 25em;
-}
-.tox .tox-autocompleter .tox-menu {
-  max-width: 25em;
-}
-.tox .tox-autocompleter .tox-autocompleter-highlight {
-  font-weight: bold;
-}
-.tox .tox-color-input {
-  display: flex;
-  position: relative;
-  z-index: 1;
-}
-.tox .tox-color-input .tox-textfield {
-  z-index: -1;
-}
-.tox .tox-color-input span {
-  border-color: rgba(34, 47, 62, 0.2);
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  height: 24px;
-  position: absolute;
-  top: 6px;
-  width: 24px;
-}
-.tox .tox-color-input span:hover:not([aria-disabled=true]),
-.tox .tox-color-input span:focus:not([aria-disabled=true]) {
-  border-color: #207ab7;
-  cursor: pointer;
-}
-.tox .tox-color-input span::before {
-  background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%);
-  background-position: 0 0, 0 6px, 6px -6px, -6px 0;
-  background-size: 12px 12px;
-  border: 1px solid #fff;
-  border-radius: 3px;
-  box-sizing: border-box;
-  content: '';
-  height: 24px;
-  left: -1px;
-  position: absolute;
-  top: -1px;
-  width: 24px;
-  z-index: -1;
-}
-.tox .tox-color-input span[aria-disabled=true] {
-  cursor: not-allowed;
-}
-.tox:not([dir=rtl]) .tox-color-input {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox:not([dir=rtl]) .tox-color-input .tox-textfield {
-  padding-left: 36px;
-}
-.tox:not([dir=rtl]) .tox-color-input span {
-  left: 6px;
-}
-.tox[dir="rtl"] .tox-color-input {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox[dir="rtl"] .tox-color-input .tox-textfield {
-  padding-right: 36px;
-}
-.tox[dir="rtl"] .tox-color-input span {
-  right: 6px;
-}
-.tox .tox-label,
-.tox .tox-toolbar-label {
-  color: rgba(34, 47, 62, 0.7);
-  display: block;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1.3;
-  padding: 0 8px 0 0;
-  text-transform: none;
-  white-space: nowrap;
-}
-.tox .tox-toolbar-label {
-  padding: 0 8px;
-}
-.tox[dir=rtl] .tox-label {
-  padding: 0 0 0 8px;
-}
-.tox .tox-form {
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group {
-  box-sizing: border-box;
-  margin-bottom: 4px;
-}
-.tox .tox-form-group--maximize {
-  flex: 1;
-}
-.tox .tox-form__group--error {
-  color: #c00;
-}
-.tox .tox-form__group--collection {
-  display: flex;
-}
-.tox .tox-form__grid {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  justify-content: space-between;
-}
-.tox .tox-form__grid--2col > .tox-form__group {
-  width: calc(50% - (8px / 2));
-}
-.tox .tox-form__grid--3col > .tox-form__group {
-  width: calc(100% / 3 - (8px / 2));
-}
-.tox .tox-form__grid--4col > .tox-form__group {
-  width: calc(25% - (8px / 2));
-}
-.tox .tox-form__controls-h-stack {
-  align-items: center;
-  display: flex;
-}
-.tox .tox-form__group--inline {
-  align-items: center;
-  display: flex;
-}
-.tox .tox-form__group--stretched {
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group--stretched .tox-textarea {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group--stretched .tox-navobj {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 100%;
-}
-.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {
-  margin-right: 4px;
-}
-.tox .tox-lock.tox-locked .tox-lock-icon__unlock,
-.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {
-  display: none;
-}
-.tox .tox-textfield,
-.tox .tox-toolbar-textfield,
-.tox .tox-selectfield select,
-.tox .tox-textarea {
-  -webkit-appearance: none;
-     -moz-appearance: none;
-          appearance: none;
-  background-color: #fff;
-  border-color: #cccccc;
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  color: #222f3e;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-  font-size: 16px;
-  line-height: 24px;
-  margin: 0;
-  min-height: 34px;
-  outline: none;
-  padding: 5px 4.75px;
-  resize: none;
-  width: 100%;
-}
-.tox .tox-textfield[disabled],
-.tox .tox-textarea[disabled] {
-  background-color: #f2f2f2;
-  color: rgba(34, 47, 62, 0.85);
-  cursor: not-allowed;
-}
-.tox .tox-textfield:focus,
-.tox .tox-selectfield select:focus,
-.tox .tox-textarea:focus {
-  border-color: #207ab7;
-  box-shadow: none;
-  outline: none;
-}
-.tox .tox-toolbar-textfield {
-  border-width: 0;
-  margin-bottom: 3px;
-  margin-top: 2px;
-  max-width: 250px;
-}
-.tox .tox-naked-btn {
-  background-color: transparent;
-  border: 0;
-  border-color: transparent;
-  box-shadow: unset;
-  color: #207ab7;
-  cursor: pointer;
-  display: block;
-  margin: 0;
-  padding: 0;
-}
-.tox .tox-naked-btn svg {
-  display: block;
-  fill: #222f3e;
-}
-.tox:not([dir=rtl]) .tox-toolbar-textfield + * {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-toolbar-textfield + * {
-  margin-right: 4px;
-}
-.tox .tox-selectfield {
-  cursor: pointer;
-  position: relative;
-}
-.tox .tox-selectfield select[disabled] {
-  background-color: #f2f2f2;
-  color: rgba(34, 47, 62, 0.85);
-  cursor: not-allowed;
-}
-.tox .tox-selectfield select::-ms-expand {
-  display: none;
-}
-.tox .tox-selectfield svg {
-  pointer-events: none;
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox:not([dir=rtl]) .tox-selectfield select[size="0"],
-.tox:not([dir=rtl]) .tox-selectfield select[size="1"] {
-  padding-right: 24px;
-}
-.tox:not([dir=rtl]) .tox-selectfield svg {
-  right: 8px;
-}
-.tox[dir=rtl] .tox-selectfield select[size="0"],
-.tox[dir=rtl] .tox-selectfield select[size="1"] {
-  padding-left: 24px;
-}
-.tox[dir=rtl] .tox-selectfield svg {
-  left: 8px;
-}
-.tox .tox-textarea {
-  -webkit-appearance: textarea;
-     -moz-appearance: textarea;
-          appearance: textarea;
-  white-space: pre-wrap;
-}
-.tox-fullscreen {
-  border: 0;
-  height: 100%;
-  left: 0;
-  margin: 0;
-  overflow: hidden;
-  -ms-scroll-chaining: none;
-      overscroll-behavior: none;
-  padding: 0;
-  position: fixed;
-  top: 0;
-  touch-action: pinch-zoom;
-  width: 100%;
-}
-.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
-  display: none;
-}
-.tox-fullscreen .tox.tox-tinymce.tox-fullscreen {
-  z-index: 1200;
-}
-.tox-fullscreen .tox.tox-tinymce-aux {
-  z-index: 1201;
-}
-.tox .tox-help__more-link {
-  list-style: none;
-  margin-top: 1em;
-}
-.tox .tox-image-tools {
-  width: 100%;
-}
-.tox .tox-image-tools__toolbar {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-.tox .tox-image-tools__image {
-  background-color: #666;
-  height: 380px;
-  overflow: auto;
-  position: relative;
-  width: 100%;
-}
-.tox .tox-image-tools__image,
-.tox .tox-image-tools__image + .tox-image-tools__toolbar {
-  margin-top: 8px;
-}
-.tox .tox-image-tools__image-bg {
-  background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);
-}
-.tox .tox-image-tools__toolbar > .tox-spacer {
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-croprect-block {
-  background: black;
-  filter: alpha(opacity=50);
-  opacity: 0.5;
-  position: absolute;
-  zoom: 1;
-}
-.tox .tox-croprect-handle {
-  border: 2px solid white;
-  height: 20px;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 20px;
-}
-.tox .tox-croprect-handle-move {
-  border: 0;
-  cursor: move;
-  position: absolute;
-}
-.tox .tox-croprect-handle-nw {
-  border-width: 2px 0 0 2px;
-  cursor: nw-resize;
-  left: 100px;
-  margin: -2px 0 0 -2px;
-  top: 100px;
-}
-.tox .tox-croprect-handle-ne {
-  border-width: 2px 2px 0 0;
-  cursor: ne-resize;
-  left: 200px;
-  margin: -2px 0 0 -20px;
-  top: 100px;
-}
-.tox .tox-croprect-handle-sw {
-  border-width: 0 0 2px 2px;
-  cursor: sw-resize;
-  left: 100px;
-  margin: -20px 2px 0 -2px;
-  top: 200px;
-}
-.tox .tox-croprect-handle-se {
-  border-width: 0 2px 2px 0;
-  cursor: se-resize;
-  left: 200px;
-  margin: -20px 0 0 -20px;
-  top: 200px;
-}
-.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
-  margin-left: 8px;
-}
-.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {
-  margin-left: 32px;
-}
-.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {
-  margin-left: 32px;
-}
-.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
-  margin-right: 8px;
-}
-.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {
-  margin-right: 32px;
-}
-.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {
-  margin-right: 32px;
-}
-.tox .tox-insert-table-picker {
-  display: flex;
-  flex-wrap: wrap;
-  width: 170px;
-}
-.tox .tox-insert-table-picker > div {
-  border-color: #cccccc;
-  border-style: solid;
-  border-width: 0 1px 1px 0;
-  box-sizing: border-box;
-  height: 17px;
-  width: 17px;
-}
-.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {
-  margin: -4px 0;
-}
-.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
-  background-color: rgba(32, 122, 183, 0.5);
-  border-color: rgba(32, 122, 183, 0.5);
-}
-.tox .tox-insert-table-picker__label {
-  color: rgba(34, 47, 62, 0.7);
-  display: block;
-  font-size: 14px;
-  padding: 4px;
-  text-align: center;
-  width: 100%;
-}
-.tox:not([dir=rtl]) {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {
-  border-right: 0;
-}
-.tox[dir=rtl] {
-  /* stylelint-disable-next-line no-descending-specificity */
-}
-.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {
-  border-right: 0;
-}
-.tox {
-  /* stylelint-disable */
-  /* stylelint-enable */
-}
-.tox .tox-menu {
-  background-color: #fff;
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
-  display: inline-block;
-  overflow: hidden;
-  vertical-align: top;
-  z-index: 1150;
-}
-.tox .tox-menu.tox-collection.tox-collection--list {
-  padding: 0;
-}
-.tox .tox-menu.tox-collection.tox-collection--toolbar {
-  padding: 4px;
-}
-.tox .tox-menu.tox-collection.tox-collection--grid {
-  padding: 4px;
-}
-.tox .tox-menu__label h1,
-.tox .tox-menu__label h2,
-.tox .tox-menu__label h3,
-.tox .tox-menu__label h4,
-.tox .tox-menu__label h5,
-.tox .tox-menu__label h6,
-.tox .tox-menu__label p,
-.tox .tox-menu__label blockquote,
-.tox .tox-menu__label code {
-  margin: 0;
-}
-.tox .tox-menubar {
-  background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;
-  background-color: #fff;
-  display: flex;
-  flex: 0 0 auto;
-  flex-shrink: 0;
-  flex-wrap: wrap;
-  padding: 0 4px 0 4px;
-}
-.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {
-  border-top: 1px solid #cccccc;
-}
-/* Deprecated. Remove in next major release */
-.tox .tox-mbtn {
-  align-items: center;
-  background: transparent;
-  border: 0;
-  border-radius: 3px;
-  box-shadow: none;
-  color: #222f3e;
-  display: flex;
-  flex: 0 0 auto;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  height: 34px;
-  justify-content: center;
-  margin: 2px 0 3px 0;
-  outline: none;
-  overflow: hidden;
-  padding: 0 4px;
-  text-transform: none;
-  width: auto;
-}
-.tox .tox-mbtn[disabled] {
-  background-color: transparent;
-  border: 0;
-  box-shadow: none;
-  color: rgba(34, 47, 62, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-mbtn:focus:not(:disabled) {
-  background: #dee0e2;
-  border: 0;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-mbtn--active {
-  background: #c8cbcf;
-  border: 0;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {
-  background: #dee0e2;
-  border: 0;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-mbtn__select-label {
-  cursor: default;
-  font-weight: normal;
-  margin: 0 4px;
-}
-.tox .tox-mbtn[disabled] .tox-mbtn__select-label {
-  cursor: not-allowed;
-}
-.tox .tox-mbtn__select-chevron {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  width: 16px;
-  display: none;
-}
-.tox .tox-notification {
-  border-radius: 3px;
-  border-style: solid;
-  border-width: 1px;
-  box-shadow: none;
-  box-sizing: border-box;
-  display: -ms-grid;
-  display: grid;
-  font-size: 14px;
-  font-weight: normal;
-  -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
-      grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
-  margin-top: 4px;
-  opacity: 0;
-  padding: 4px;
-  transition: transform 100ms ease-in, opacity 150ms ease-in;
-}
-.tox .tox-notification p {
-  font-size: 14px;
-  font-weight: normal;
-}
-.tox .tox-notification a {
-  text-decoration: underline;
-}
-.tox .tox-notification--in {
-  opacity: 1;
-}
-.tox .tox-notification--success {
-  background-color: #e4eeda;
-  border-color: #d7e6c8;
-  color: #222f3e;
-}
-.tox .tox-notification--success p {
-  color: #222f3e;
-}
-.tox .tox-notification--success a {
-  color: #547831;
-}
-.tox .tox-notification--success svg {
-  fill: #222f3e;
-}
-.tox .tox-notification--error {
-  background-color: #f8dede;
-  border-color: #f2bfbf;
-  color: #222f3e;
-}
-.tox .tox-notification--error p {
-  color: #222f3e;
-}
-.tox .tox-notification--error a {
-  color: #c00;
-}
-.tox .tox-notification--error svg {
-  fill: #222f3e;
-}
-.tox .tox-notification--warn,
-.tox .tox-notification--warning {
-  background-color: #fffaea;
-  border-color: #ffe89d;
-  color: #222f3e;
-}
-.tox .tox-notification--warn p,
-.tox .tox-notification--warning p {
-  color: #222f3e;
-}
-.tox .tox-notification--warn a,
-.tox .tox-notification--warning a {
-  color: #222f3e;
-}
-.tox .tox-notification--warn svg,
-.tox .tox-notification--warning svg {
-  fill: #222f3e;
-}
-.tox .tox-notification--info {
-  background-color: #d9edf7;
-  border-color: #779ecb;
-  color: #222f3e;
-}
-.tox .tox-notification--info p {
-  color: #222f3e;
-}
-.tox .tox-notification--info a {
-  color: #222f3e;
-}
-.tox .tox-notification--info svg {
-  fill: #222f3e;
-}
-.tox .tox-notification__body {
-  -ms-grid-row-align: center;
-      align-self: center;
-  color: #222f3e;
-  font-size: 14px;
-  -ms-grid-column-span: 1;
-  grid-column-end: 3;
-  -ms-grid-column: 2;
-      grid-column-start: 2;
-  -ms-grid-row-span: 1;
-  grid-row-end: 2;
-  -ms-grid-row: 1;
-      grid-row-start: 1;
-  text-align: center;
-  white-space: normal;
-  word-break: break-all;
-  word-break: break-word;
-}
-.tox .tox-notification__body > * {
-  margin: 0;
-}
-.tox .tox-notification__body > * + * {
-  margin-top: 1rem;
-}
-.tox .tox-notification__icon {
-  -ms-grid-row-align: center;
-      align-self: center;
-  -ms-grid-column-span: 1;
-  grid-column-end: 2;
-  -ms-grid-column: 1;
-      grid-column-start: 1;
-  -ms-grid-row-span: 1;
-  grid-row-end: 2;
-  -ms-grid-row: 1;
-      grid-row-start: 1;
-  -ms-grid-column-align: end;
-      justify-self: end;
-}
-.tox .tox-notification__icon svg {
-  display: block;
-}
-.tox .tox-notification__dismiss {
-  -ms-grid-row-align: start;
-      align-self: start;
-  -ms-grid-column-span: 1;
-  grid-column-end: 4;
-  -ms-grid-column: 3;
-      grid-column-start: 3;
-  -ms-grid-row-span: 1;
-  grid-row-end: 2;
-  -ms-grid-row: 1;
-      grid-row-start: 1;
-  -ms-grid-column-align: end;
-      justify-self: end;
-}
-.tox .tox-notification .tox-progress-bar {
-  -ms-grid-column-span: 3;
-  grid-column-end: 4;
-  -ms-grid-column: 1;
-      grid-column-start: 1;
-  -ms-grid-row-span: 1;
-  grid-row-end: 3;
-  -ms-grid-row: 2;
-      grid-row-start: 2;
-  -ms-grid-column-align: center;
-      justify-self: center;
-}
-.tox .tox-pop {
-  display: inline-block;
-  position: relative;
-}
-.tox .tox-pop--resizing {
-  transition: width 0.1s ease;
-}
-.tox .tox-pop--resizing .tox-toolbar {
-  flex-wrap: nowrap;
-}
-.tox .tox-pop__dialog {
-  background-color: #fff;
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-  min-width: 0;
-  overflow: hidden;
-}
-.tox .tox-pop__dialog > *:not(.tox-toolbar) {
-  margin: 4px 4px 4px 8px;
-}
-.tox .tox-pop__dialog .tox-toolbar {
-  background-color: transparent;
-  margin-bottom: -1px;
-}
-.tox .tox-pop::before,
-.tox .tox-pop::after {
-  border-style: solid;
-  content: '';
-  display: block;
-  height: 0;
-  position: absolute;
-  width: 0;
-}
-.tox .tox-pop.tox-pop--bottom::before,
-.tox .tox-pop.tox-pop--bottom::after {
-  left: 50%;
-  top: 100%;
-}
-.tox .tox-pop.tox-pop--bottom::after {
-  border-color: #fff transparent transparent transparent;
-  border-width: 8px;
-  margin-left: -8px;
-  margin-top: -1px;
-}
-.tox .tox-pop.tox-pop--bottom::before {
-  border-color: #cccccc transparent transparent transparent;
-  border-width: 9px;
-  margin-left: -9px;
-}
-.tox .tox-pop.tox-pop--top::before,
-.tox .tox-pop.tox-pop--top::after {
-  left: 50%;
-  top: 0;
-  transform: translateY(-100%);
-}
-.tox .tox-pop.tox-pop--top::after {
-  border-color: transparent transparent #fff transparent;
-  border-width: 8px;
-  margin-left: -8px;
-  margin-top: 1px;
-}
-.tox .tox-pop.tox-pop--top::before {
-  border-color: transparent transparent #cccccc transparent;
-  border-width: 9px;
-  margin-left: -9px;
-}
-.tox .tox-pop.tox-pop--left::before,
-.tox .tox-pop.tox-pop--left::after {
-  left: 0;
-  top: calc(50% - 1px);
-  transform: translateY(-50%);
-}
-.tox .tox-pop.tox-pop--left::after {
-  border-color: transparent #fff transparent transparent;
-  border-width: 8px;
-  margin-left: -15px;
-}
-.tox .tox-pop.tox-pop--left::before {
-  border-color: transparent #cccccc transparent transparent;
-  border-width: 10px;
-  margin-left: -19px;
-}
-.tox .tox-pop.tox-pop--right::before,
-.tox .tox-pop.tox-pop--right::after {
-  left: 100%;
-  top: calc(50% + 1px);
-  transform: translateY(-50%);
-}
-.tox .tox-pop.tox-pop--right::after {
-  border-color: transparent transparent transparent #fff;
-  border-width: 8px;
-  margin-left: -1px;
-}
-.tox .tox-pop.tox-pop--right::before {
-  border-color: transparent transparent transparent #cccccc;
-  border-width: 10px;
-  margin-left: -1px;
-}
-.tox .tox-pop.tox-pop--align-left::before,
-.tox .tox-pop.tox-pop--align-left::after {
-  left: 20px;
-}
-.tox .tox-pop.tox-pop--align-right::before,
-.tox .tox-pop.tox-pop--align-right::after {
-  left: calc(100% - 20px);
-}
-.tox .tox-sidebar-wrap {
-  display: flex;
-  flex-direction: row;
-  flex-grow: 1;
-  -ms-flex-preferred-size: 0;
-  min-height: 0;
-}
-.tox .tox-sidebar {
-  background-color: #fff;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-end;
-}
-.tox .tox-sidebar__slider {
-  display: flex;
-  overflow: hidden;
-}
-.tox .tox-sidebar__pane-container {
-  display: flex;
-}
-.tox .tox-sidebar__pane {
-  display: flex;
-}
-.tox .tox-sidebar--sliding-closed {
-  opacity: 0;
-}
-.tox .tox-sidebar--sliding-open {
-  opacity: 1;
-}
-.tox .tox-sidebar--sliding-growing,
-.tox .tox-sidebar--sliding-shrinking {
-  transition: width 0.5s ease, opacity 0.5s ease;
-}
-.tox .tox-selector {
-  background-color: #4099ff;
-  border-color: #4099ff;
-  border-style: solid;
-  border-width: 1px;
-  box-sizing: border-box;
-  display: inline-block;
-  height: 10px;
-  position: absolute;
-  width: 10px;
-}
-.tox.tox-platform-touch .tox-selector {
-  height: 12px;
-  width: 12px;
-}
-.tox .tox-slider {
-  align-items: center;
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-  height: 24px;
-  justify-content: center;
-  position: relative;
-}
-.tox .tox-slider__rail {
-  background-color: transparent;
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  height: 10px;
-  min-width: 120px;
-  width: 100%;
-}
-.tox .tox-slider__handle {
-  background-color: #207ab7;
-  border: 2px solid #185d8c;
-  border-radius: 3px;
-  box-shadow: none;
-  height: 24px;
-  left: 50%;
-  position: absolute;
-  top: 50%;
-  transform: translateX(-50%) translateY(-50%);
-  width: 14px;
-}
-.tox .tox-source-code {
-  overflow: auto;
-}
-.tox .tox-spinner {
-  display: flex;
-}
-.tox .tox-spinner > div {
-  animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;
-  background-color: rgba(34, 47, 62, 0.7);
-  border-radius: 100%;
-  height: 8px;
-  width: 8px;
-}
-.tox .tox-spinner > div:nth-child(1) {
-  animation-delay: -0.32s;
-}
-.tox .tox-spinner > div:nth-child(2) {
-  animation-delay: -0.16s;
-}
-@keyframes tam-bouncing-dots {
-  0%,
-  80%,
-  100% {
-    transform: scale(0);
-  }
-  40% {
-    transform: scale(1);
-  }
-}
-.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {
-  margin-left: 4px;
-}
-.tox[dir=rtl] .tox-spinner > div:not(:first-child) {
-  margin-right: 4px;
-}
-.tox .tox-statusbar {
-  align-items: center;
-  background-color: #fff;
-  border-top: 1px solid #cccccc;
-  color: rgba(34, 47, 62, 0.7);
-  display: flex;
-  flex: 0 0 auto;
-  font-size: 12px;
-  font-weight: normal;
-  height: 18px;
-  overflow: hidden;
-  padding: 0 8px;
-  position: relative;
-  text-transform: uppercase;
-}
-.tox .tox-statusbar__text-container {
-  display: flex;
-  flex: 1 1 auto;
-  justify-content: flex-end;
-  overflow: hidden;
-}
-.tox .tox-statusbar__path {
-  display: flex;
-  flex: 1 1 auto;
-  margin-right: auto;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.tox .tox-statusbar__path > * {
-  display: inline;
-  white-space: nowrap;
-}
-.tox .tox-statusbar__wordcount {
-  flex: 0 0 auto;
-  margin-left: 1ch;
-}
-.tox .tox-statusbar a,
-.tox .tox-statusbar__path-item,
-.tox .tox-statusbar__wordcount {
-  color: rgba(34, 47, 62, 0.7);
-  text-decoration: none;
-}
-.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),
-.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {
-  cursor: pointer;
-  text-decoration: underline;
-}
-.tox .tox-statusbar__resize-handle {
-  align-items: flex-end;
-  align-self: stretch;
-  cursor: nwse-resize;
-  display: flex;
-  flex: 0 0 auto;
-  justify-content: flex-end;
-  margin-left: auto;
-  margin-right: -8px;
-  padding-left: 1ch;
-}
-.tox .tox-statusbar__resize-handle svg {
-  display: block;
-  fill: rgba(34, 47, 62, 0.7);
-}
-.tox:not([dir=rtl]) .tox-statusbar__path > * {
-  margin-right: 4px;
-}
-.tox:not([dir=rtl]) .tox-statusbar__branding {
-  margin-left: 1ch;
-}
-.tox[dir=rtl] .tox-statusbar {
-  flex-direction: row-reverse;
-}
-.tox[dir=rtl] .tox-statusbar__path > * {
-  margin-left: 4px;
-}
-.tox .tox-throbber {
-  z-index: 1400;
-}
-.tox .tox-throbber__busy-spinner {
-  align-items: center;
-  background-color: rgba(255, 255, 255, 0.6);
-  bottom: 0;
-  display: flex;
-  justify-content: center;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-}
-.tox .tox-tbtn {
-  align-items: center;
-  background: transparent;
-  border: 0;
-  border-radius: 3px;
-  box-shadow: none;
-  color: #222f3e;
-  display: flex;
-  flex: 0 0 auto;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  height: 34px;
-  justify-content: center;
-  margin: 2px 0 3px 0;
-  outline: none;
-  overflow: hidden;
-  padding: 0;
-  text-transform: none;
-  width: 34px;
-}
-.tox .tox-tbtn svg {
-  display: block;
-  fill: #222f3e;
-}
-.tox .tox-tbtn.tox-tbtn-more {
-  padding-left: 5px;
-  padding-right: 5px;
-  width: inherit;
-}
-.tox .tox-tbtn:focus {
-  background: #dee0e2;
-  border: 0;
-  box-shadow: none;
-}
-.tox .tox-tbtn:hover {
-  background: #dee0e2;
-  border: 0;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-tbtn:hover svg {
-  fill: #222f3e;
-}
-.tox .tox-tbtn:active {
-  background: #c8cbcf;
-  border: 0;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-tbtn:active svg {
-  fill: #222f3e;
-}
-.tox .tox-tbtn--disabled,
-.tox .tox-tbtn--disabled:hover,
-.tox .tox-tbtn:disabled,
-.tox .tox-tbtn:disabled:hover {
-  background: transparent;
-  border: 0;
-  box-shadow: none;
-  color: rgba(34, 47, 62, 0.5);
-  cursor: not-allowed;
-}
-.tox .tox-tbtn--disabled svg,
-.tox .tox-tbtn--disabled:hover svg,
-.tox .tox-tbtn:disabled svg,
-.tox .tox-tbtn:disabled:hover svg {
-  /* stylelint-disable-line no-descending-specificity */
-  fill: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-tbtn--enabled,
-.tox .tox-tbtn--enabled:hover {
-  background: #c8cbcf;
-  border: 0;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-tbtn--enabled > *,
-.tox .tox-tbtn--enabled:hover > * {
-  transform: none;
-}
-.tox .tox-tbtn--enabled svg,
-.tox .tox-tbtn--enabled:hover svg {
-  /* stylelint-disable-line no-descending-specificity */
-  fill: #222f3e;
-}
-.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {
-  color: #222f3e;
-}
-.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {
-  fill: #222f3e;
-}
-.tox .tox-tbtn:active > * {
-  transform: none;
-}
-.tox .tox-tbtn--md {
-  height: 51px;
-  width: 51px;
-}
-.tox .tox-tbtn--lg {
-  flex-direction: column;
-  height: 68px;
-  width: 68px;
-}
-.tox .tox-tbtn--return {
-  -ms-grid-row-align: stretch;
-      align-self: stretch;
-  height: unset;
-  width: 16px;
-}
-.tox .tox-tbtn--labeled {
-  padding: 0 4px;
-  width: unset;
-}
-.tox .tox-tbtn__vlabel {
-  display: block;
-  font-size: 10px;
-  font-weight: normal;
-  letter-spacing: -0.025em;
-  margin-bottom: 4px;
-  white-space: nowrap;
-}
-.tox .tox-tbtn--select {
-  margin: 2px 0 3px 0;
-  padding: 0 4px;
-  width: auto;
-}
-.tox .tox-tbtn__select-label {
-  cursor: default;
-  font-weight: normal;
-  margin: 0 4px;
-}
-.tox .tox-tbtn__select-chevron {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  width: 16px;
-}
-.tox .tox-tbtn__select-chevron svg {
-  fill: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-tbtn--bespoke .tox-tbtn__select-label {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  width: 7em;
-}
-.tox .tox-split-button {
-  border: 0;
-  border-radius: 3px;
-  box-sizing: border-box;
-  display: flex;
-  margin: 2px 0 3px 0;
-  overflow: hidden;
-}
-.tox .tox-split-button:hover {
-  box-shadow: 0 0 0 1px #dee0e2 inset;
-}
-.tox .tox-split-button:focus {
-  background: #dee0e2;
-  box-shadow: none;
-  color: #222f3e;
-}
-.tox .tox-split-button > * {
-  border-radius: 0;
-}
-.tox .tox-split-button__chevron {
-  width: 16px;
-}
-.tox .tox-split-button__chevron svg {
-  fill: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-split-button .tox-tbtn {
-  margin: 0;
-}
-.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {
-  width: 30px;
-}
-.tox.tox-platform-touch .tox-split-button__chevron {
-  width: 20px;
-}
-.tox .tox-split-button.tox-tbtn--disabled:hover,
-.tox .tox-split-button.tox-tbtn--disabled:focus,
-.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,
-.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {
-  background: transparent;
-  box-shadow: none;
-  color: rgba(34, 47, 62, 0.5);
-}
-.tox .tox-toolbar-overlord {
-  background-color: #fff;
-}
-.tox .tox-toolbar,
-.tox .tox-toolbar__primary,
-.tox .tox-toolbar__overflow {
-  background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;
-  background-color: #fff;
-  display: flex;
-  flex: 0 0 auto;
-  flex-shrink: 0;
-  flex-wrap: wrap;
-  padding: 0 0;
-}
-.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {
-  height: 0;
-  opacity: 0;
-  padding-bottom: 0;
-  padding-top: 0;
-  visibility: hidden;
-}
-.tox .tox-toolbar__overflow--growing {
-  transition: height 0.3s ease, opacity 0.2s linear 0.1s;
-}
-.tox .tox-toolbar__overflow--shrinking {
-  transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;
-}
-.tox .tox-menubar + .tox-toolbar,
-.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {
-  border-top: 1px solid #cccccc;
-  margin-top: -1px;
-}
-.tox .tox-toolbar--scrolling {
-  flex-wrap: nowrap;
-  overflow-x: auto;
-}
-.tox .tox-pop .tox-toolbar {
-  border-width: 0;
-}
-.tox .tox-toolbar--no-divider {
-  background-image: none;
-}
-.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,
-.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {
-  border-top: 1px solid #cccccc;
-}
-.tox.tox-tinymce-aux .tox-toolbar__overflow {
-  background-color: #fff;
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-}
-.tox[dir=rtl] .tox-tbtn__icon-rtl svg {
-  transform: rotateY(180deg);
-}
-.tox .tox-toolbar__group {
-  align-items: center;
-  display: flex;
-  flex-wrap: wrap;
-  margin: 0 0;
-  padding: 0 4px 0 4px;
-}
-.tox .tox-toolbar__group--pull-right {
-  margin-left: auto;
-}
-.tox .tox-toolbar--scrolling .tox-toolbar__group {
-  flex-shrink: 0;
-  flex-wrap: nowrap;
-}
-.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {
-  border-right: 1px solid #cccccc;
-}
-.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {
-  border-left: 1px solid #cccccc;
-}
-.tox .tox-tooltip {
-  display: inline-block;
-  padding: 8px;
-  position: relative;
-}
-.tox .tox-tooltip__body {
-  background-color: #222f3e;
-  border-radius: 3px;
-  box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3);
-  color: rgba(255, 255, 255, 0.75);
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  padding: 4px 8px;
-  text-transform: none;
-}
-.tox .tox-tooltip__arrow {
-  position: absolute;
-}
-.tox .tox-tooltip--down .tox-tooltip__arrow {
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  border-top: 8px solid #222f3e;
-  bottom: 0;
-  left: 50%;
-  position: absolute;
-  transform: translateX(-50%);
-}
-.tox .tox-tooltip--up .tox-tooltip__arrow {
-  border-bottom: 8px solid #222f3e;
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-  left: 50%;
-  position: absolute;
-  top: 0;
-  transform: translateX(-50%);
-}
-.tox .tox-tooltip--right .tox-tooltip__arrow {
-  border-bottom: 8px solid transparent;
-  border-left: 8px solid #222f3e;
-  border-top: 8px solid transparent;
-  position: absolute;
-  right: 0;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox .tox-tooltip--left .tox-tooltip__arrow {
-  border-bottom: 8px solid transparent;
-  border-right: 8px solid #222f3e;
-  border-top: 8px solid transparent;
-  left: 0;
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.tox .tox-well {
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  padding: 8px;
-  width: 100%;
-}
-.tox .tox-well > *:first-child {
-  margin-top: 0;
-}
-.tox .tox-well > *:last-child {
-  margin-bottom: 0;
-}
-.tox .tox-well > *:only-child {
-  margin: 0;
-}
-.tox .tox-custom-editor {
-  border: 1px solid #cccccc;
-  border-radius: 3px;
-  display: flex;
-  flex: 1;
-  position: relative;
-}
-/* stylelint-disable */
-.tox {
-  /* stylelint-enable */
-}
-.tox .tox-dialog-loading::before {
-  background-color: rgba(0, 0, 0, 0.5);
-  content: "";
-  height: 100%;
-  position: absolute;
-  width: 100%;
-  z-index: 1000;
-}
-.tox .tox-tab {
-  cursor: pointer;
-}
-.tox .tox-dialog__content-js {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-dialog__body-content .tox-collection {
-  display: flex;
-  flex: 1;
-  -ms-flex-preferred-size: auto;
-}
-.tox .tox-image-tools-edit-panel {
-  height: 60px;
-}
-.tox .tox-image-tools__sidebar {
-  height: 60px;
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.min.css


+ 0 - 673
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.mobile.css

@@ -1,673 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-/* RESET all the things! */
-.tinymce-mobile-outer-container {
-  all: initial;
-  display: block;
-}
-.tinymce-mobile-outer-container * {
-  border: 0;
-  box-sizing: initial;
-  cursor: inherit;
-  float: none;
-  line-height: 1;
-  margin: 0;
-  outline: 0;
-  padding: 0;
-  -webkit-tap-highlight-color: transparent;
-  /* TBIO-3691, stop the gray flicker on touch. */
-  text-shadow: none;
-  white-space: nowrap;
-}
-.tinymce-mobile-icon-arrow-back::before {
-  content: "\e5cd";
-}
-.tinymce-mobile-icon-image::before {
-  content: "\e412";
-}
-.tinymce-mobile-icon-cancel-circle::before {
-  content: "\e5c9";
-}
-.tinymce-mobile-icon-full-dot::before {
-  content: "\e061";
-}
-.tinymce-mobile-icon-align-center::before {
-  content: "\e234";
-}
-.tinymce-mobile-icon-align-left::before {
-  content: "\e236";
-}
-.tinymce-mobile-icon-align-right::before {
-  content: "\e237";
-}
-.tinymce-mobile-icon-bold::before {
-  content: "\e238";
-}
-.tinymce-mobile-icon-italic::before {
-  content: "\e23f";
-}
-.tinymce-mobile-icon-unordered-list::before {
-  content: "\e241";
-}
-.tinymce-mobile-icon-ordered-list::before {
-  content: "\e242";
-}
-.tinymce-mobile-icon-font-size::before {
-  content: "\e245";
-}
-.tinymce-mobile-icon-underline::before {
-  content: "\e249";
-}
-.tinymce-mobile-icon-link::before {
-  content: "\e157";
-}
-.tinymce-mobile-icon-unlink::before {
-  content: "\eca2";
-}
-.tinymce-mobile-icon-color::before {
-  content: "\e891";
-}
-.tinymce-mobile-icon-previous::before {
-  content: "\e314";
-}
-.tinymce-mobile-icon-next::before {
-  content: "\e315";
-}
-.tinymce-mobile-icon-large-font::before,
-.tinymce-mobile-icon-style-formats::before {
-  content: "\e264";
-}
-.tinymce-mobile-icon-undo::before {
-  content: "\e166";
-}
-.tinymce-mobile-icon-redo::before {
-  content: "\e15a";
-}
-.tinymce-mobile-icon-removeformat::before {
-  content: "\e239";
-}
-.tinymce-mobile-icon-small-font::before {
-  content: "\e906";
-}
-.tinymce-mobile-icon-readonly-back::before,
-.tinymce-mobile-format-matches::after {
-  content: "\e5ca";
-}
-.tinymce-mobile-icon-small-heading::before {
-  content: "small";
-}
-.tinymce-mobile-icon-large-heading::before {
-  content: "large";
-}
-.tinymce-mobile-icon-small-heading::before,
-.tinymce-mobile-icon-large-heading::before {
-  font-family: sans-serif;
-  font-size: 80%;
-}
-.tinymce-mobile-mask-edit-icon::before {
-  content: "\e254";
-}
-.tinymce-mobile-icon-back::before {
-  content: "\e5c4";
-}
-.tinymce-mobile-icon-heading::before {
-  /* TODO: Translate */
-  content: "Headings";
-  font-family: sans-serif;
-  font-size: 80%;
-  font-weight: bold;
-}
-.tinymce-mobile-icon-h1::before {
-  content: "H1";
-  font-weight: bold;
-}
-.tinymce-mobile-icon-h2::before {
-  content: "H2";
-  font-weight: bold;
-}
-.tinymce-mobile-icon-h3::before {
-  content: "H3";
-  font-weight: bold;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  background: rgba(51, 51, 51, 0.5);
-  height: 100%;
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
-  align-items: center;
-  border-radius: 50%;
-  display: flex;
-  flex-direction: column;
-  font-family: sans-serif;
-  font-size: 1em;
-  justify-content: space-between;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  border-radius: 50%;
-  height: 2.1em;
-  width: 2.1em;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  flex-direction: column;
-  font-size: 1em;
-}
-@media only screen and (min-device-width:700px) {
-  .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
-    font-size: 1.2em;
-  }
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-  border-radius: 50%;
-  height: 2.1em;
-  width: 2.1em;
-  background-color: white;
-  color: #207ab7;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
-  content: "\e900";
-  font-family: 'tinymce-mobile', sans-serif;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
-  z-index: 2;
-}
-.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
-  background: #ffffff;
-  border: none;
-  bottom: 0;
-  display: flex;
-  flex-direction: column;
-  left: 0;
-  position: fixed;
-  right: 0;
-  top: 0;
-}
-.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
-  position: relative;
-}
-.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
-  display: flex;
-  flex-grow: 1;
-}
-.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
-  display: flex !important;
-  flex-grow: 1;
-  height: auto !important;
-}
-.tinymce-mobile-android-scroll-reload {
-  overflow: hidden;
-}
-:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
-  margin-top: 23px;
-}
-.tinymce-mobile-toolstrip {
-  background: #fff;
-  display: flex;
-  flex: 0 0 auto;
-  z-index: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
-  align-items: center;
-  background-color: #fff;
-  border-bottom: 1px solid #cccccc;
-  display: flex;
-  flex: 1;
-  height: 2.5em;
-  width: 100%;
-  /* Make it no larger than the toolstrip, so that it needs to scroll */
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex-shrink: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
-  background: #f44336;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
-  flex-grow: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
-  padding-left: 0.5em;
-  padding-right: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
-  align-items: center;
-  display: flex;
-  height: 80%;
-  margin-left: 2px;
-  margin-right: 2px;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
-  background: #c8cbcf;
-  color: #cccccc;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
-  background: #207ab7;
-  color: #eceff1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
-  /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex: 1;
-  padding-bottom: 0.4em;
-  padding-top: 0.4em;
-  /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
-  /* For widgets like the colour picker, use the whole height */
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
-  display: flex;
-  min-height: 1.5em;
-  overflow: hidden;
-  padding-left: 0;
-  padding-right: 0;
-  position: relative;
-  width: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
-  display: flex;
-  height: 100%;
-  transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
-  width: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
-  display: flex;
-  flex: 0 0 auto;
-  justify-content: space-between;
-  width: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
-  font-family: Sans-serif;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
-  display: flex;
-  flex-grow: 1;
-  position: relative;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
-  -ms-grid-row-align: center;
-      align-self: center;
-  background: inherit;
-  border: none;
-  border-radius: 50%;
-  color: #888;
-  font-size: 0.6em;
-  font-weight: bold;
-  height: 100%;
-  padding-right: 2px;
-  position: absolute;
-  right: 0;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
-  display: none;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
-  align-items: center;
-  display: flex;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
-  align-items: center;
-  display: flex;
-  font-weight: bold;
-  height: 100%;
-  padding-left: 0.5em;
-  padding-right: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
-  visibility: hidden;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
-  color: #cccccc;
-  font-size: 10px;
-  line-height: 10px;
-  margin: 0 2px;
-  padding-top: 3px;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
-  color: #c8cbcf;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
-  margin-left: 0.5em;
-  margin-right: 0.9em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
-  margin-left: 0.9em;
-  margin-right: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
-  display: flex;
-  flex: 1;
-  margin-left: 0;
-  margin-right: 0;
-  padding: 0.28em 0;
-  position: relative;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
-  align-items: center;
-  display: flex;
-  flex-grow: 1;
-  height: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
-  background: #cccccc;
-  display: flex;
-  flex: 1;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
-  padding-left: 2em;
-  padding-right: 2em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
-  align-items: center;
-  display: flex;
-  flex-grow: 1;
-  height: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
-  background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
-  display: flex;
-  flex: 1;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
-  /* Not part of theming */
-  background: black;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-  width: 1.2em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
-  /* Not part of theming */
-  background: white;
-  height: 0.2em;
-  margin-bottom: 0.3em;
-  margin-top: 0.3em;
-  width: 1.2em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
-  /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
-     * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
-     * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
-     * this approach.
-    */
-  align-items: center;
-  background-clip: padding-box;
-  background-color: #455a64;
-  border: 0.5em solid rgba(136, 136, 136, 0);
-  border-radius: 3em;
-  bottom: 0;
-  color: #fff;
-  display: flex;
-  height: 0.5em;
-  justify-content: center;
-  left: -10px;
-  margin: auto;
-  position: absolute;
-  top: 0;
-  transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
-  width: 0.5em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
-  border: 0.5em solid rgba(136, 136, 136, 0.39);
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
-  align-items: center;
-  display: flex;
-  height: 100%;
-  flex: 1;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
-  flex-direction: column;
-  justify-content: center;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
-  align-items: center;
-  display: flex;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
-  height: 100%;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
-  display: flex;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
-  background: #ffffff;
-  border: none;
-  border-radius: 0;
-  color: #455a64;
-  flex-grow: 1;
-  font-size: 0.85em;
-  padding-bottom: 0.1em;
-  padding-left: 5px;
-  padding-top: 0.1em;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
-  /* WebKit, Blink, Edge */
-  color: #888;
-}
-.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
-  /* WebKit, Blink, Edge */
-  color: #888;
-}
-/* dropup */
-.tinymce-mobile-dropup {
-  background: white;
-  display: flex;
-  overflow: hidden;
-  width: 100%;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
-  transition: height 0.3s ease-out;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
-  transition: height 0.3s ease-in;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
-  flex-grow: 0;
-}
-.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
-  flex-grow: 1;
-}
-/* TODO min-height for device size and orientation */
-.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
-  min-height: 200px;
-}
-@media only screen and (orientation: landscape) {
-  .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
-    min-height: 200px;
-  }
-}
-@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
-  .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
-    min-height: 150px;
-  }
-}
-/* styles menu */
-.tinymce-mobile-styles-menu {
-  font-family: sans-serif;
-  outline: 4px solid black;
-  overflow: hidden;
-  position: relative;
-  width: 100%;
-}
-.tinymce-mobile-styles-menu [role="menu"] {
-  display: flex;
-  flex-direction: column;
-  height: 100%;
-  position: absolute;
-  width: 100%;
-}
-.tinymce-mobile-styles-menu [role="menu"].transitioning {
-  transition: transform 0.5s ease-in-out;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
-  border-bottom: 1px solid #ddd;
-  color: #455a64;
-  cursor: pointer;
-  display: flex;
-  padding: 1em 1em;
-  position: relative;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
-  color: #455a64;
-  content: "\e314";
-  font-family: 'tinymce-mobile', sans-serif;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
-  color: #455a64;
-  content: "\e315";
-  font-family: 'tinymce-mobile', sans-serif;
-  padding-left: 1em;
-  padding-right: 1em;
-  position: absolute;
-  right: 0;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
-  font-family: 'tinymce-mobile', sans-serif;
-  padding-left: 1em;
-  padding-right: 1em;
-  position: absolute;
-  right: 0;
-}
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
-.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
-  align-items: center;
-  background: #fff;
-  border-top: #455a64;
-  color: #455a64;
-  display: flex;
-  min-height: 2.5em;
-  padding-left: 1em;
-  padding-right: 1em;
-}
-.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
-.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
-  transform: translate(-100%);
-}
-.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
-.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
-  transform: translate(0%);
-}
-.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
-.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
-  transform: translate(100%);
-}
-@font-face {
-  font-family: 'tinymce-mobile';
-  font-style: normal;
-  font-weight: normal;
-  src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
-}
-@media (min-device-width: 700px) {
-  .tinymce-mobile-outer-container,
-  .tinymce-mobile-outer-container input {
-    font-size: 25px;
-  }
-}
-@media (max-device-width: 700px) {
-  .tinymce-mobile-outer-container,
-  .tinymce-mobile-outer-container input {
-    font-size: 18px;
-  }
-}
-.tinymce-mobile-icon {
-  font-family: 'tinymce-mobile', sans-serif;
-}
-.mixin-flex-and-centre {
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-.mixin-flex-bar {
-  align-items: center;
-  display: flex;
-  height: 100%;
-}
-.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
-  background-color: #fff;
-  width: 100%;
-}
-.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
-  /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
-  background-color: #207ab7;
-  border-radius: 50%;
-  bottom: 1em;
-  color: white;
-  font-size: 1em;
-  height: 2.1em;
-  position: fixed;
-  right: 2em;
-  width: 2.1em;
-  align-items: center;
-  display: flex;
-  justify-content: center;
-}
-@media only screen and (min-device-width:700px) {
-  .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
-    font-size: 1.2em;
-  }
-}
-.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
-  height: 300px;
-  overflow: hidden;
-}
-.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
-  height: 100%;
-}
-.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
-  display: none;
-}
-/*
-  Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
-  increased and the whole body becomes scrollable. It's important!
- */
-input[type="file"]::-webkit-file-upload-button {
-  display: none;
-}
-@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
-  .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
-    bottom: 50%;
-  }
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 6
src/main/jmrh/public/未命名文件夹/未命名文件夹/skins/ui/oxide/skin.mobile.min.css


+ 24 - 3
src/main/jmrh/src/plugins/http.js

@@ -24,6 +24,15 @@ function decrypt(content) {
     return decrypted.toString(CryptoJS.enc.Utf8);
 }
 
+function encrypt(content) {
+    const key = CryptoJS.enc.Hex.parse('2181E9E80460B852859EE455AC5203D9');
+    var encrypted = CryptoJS.AES.encrypt(content, key, {
+        mode: CryptoJS.mode.ECB,
+        padding: CryptoJS.pad.Pkcs7
+    });
+    return encrypted.ciphertext.toString(CryptoJS.enc.Hex);
+}
+
 axiosInstance.interceptors.request.use(
     function(config) {
         config.headers = config.headers || {};
@@ -93,15 +102,27 @@ export default {
             },
             post(url, body, options) {
                 options = options || {};
+                options.headers = options.headers || {};
                 body = body || {};
-                if (!(body instanceof FormData)) {
-                    if (options.body !== 'json') {
+                if (body instanceof FormData) {
+                    //
+                } else {
+                    options.headers['Content-Encrypted'] = 'true';
+                    if (options.body === 'json') {
+                        body = encrypt(JSON.stringify(body));
+                        options.headers['content-type'] = 'application/json';
+                    } else {
+                        for (let key of Object.keys(body)) {
+                            if (body[key] != undefined && body[key] !== '') {
+                                body[key] = encrypt(body[key] + '');
+                            }
+                        }
                         body = qs.stringify(body);
                     }
                 }
                 return new Promise((resolve, reject) => {
                     axiosInstance
-                        .post(url, body, { withCredentials: true })
+                        .post(url, body, { withCredentials: true, headers: { ...options.headers } })
                         .then(res => {
                             resolve(res.data);
                         })

+ 8 - 0
src/main/jmrh/src/router/index.js

@@ -22,6 +22,14 @@ const routes = [
                     menu: 'home'
                 }
             },
+            {
+                path: '/app',
+                name: 'app',
+                component: () => import(/* webpackChunkName: "app_download" */ '@/views/app.vue'),
+                meta: {
+                    menu: 'app'
+                }
+            },
             {
                 path: '/news',
                 name: 'news',

+ 1 - 1
src/main/jmrh/src/styles/common.css

@@ -1,4 +1,4 @@
-.btn-round-large {
+\.btn-round-large {
   height: 44px;
   background: #f7931d;
   border-radius: 30px;

+ 7 - 16
src/main/jmrh/src/views/Index.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-container style="background: #f5f7fa;">
+    <el-container style="background: #f5f7fa">
         <el-header class="header">
             <div class="head-title">
                 <img src="../assets/login_bg_01.png" class="bg-01" />
@@ -37,6 +37,7 @@
                                 <el-menu-item index="policy" :route="{ name: 'policy' }">政策法规</el-menu-item>
                                 <el-menu-item index="resource" :route="{ name: 'resource' }">资源供需</el-menu-item>
                                 <el-menu-item index="interact" :route="{ name: 'interact' }">政民互动</el-menu-item>
+                                <el-menu-item index="app" :route="{ name: 'app' }">APP下载</el-menu-item>
                             </el-menu>
 
                             <el-popover
@@ -109,27 +110,17 @@
                                     <div class="btn" @click="$router.push({ name: 'account' })">
                                         {{ userInfo.nickname }}
                                     </div>
-                                    <div class="btn" @click="$router.push({ name: 'editInfo' })">
-                                        编辑资料
-                                    </div>
-                                    <div class="btn" @click="$router.push({ name: 'myCollection' })">
-                                        我的收藏
-                                    </div>
-                                    <div class="btn" @click="$router.push({ name: 'release' })">
-                                        我的发布
-                                    </div>
-                                    <div class="btn" @click="$router.push({ name: 'docking' })">
-                                        我的需求
-                                    </div>
+                                    <div class="btn" @click="$router.push({ name: 'editInfo' })">编辑资料</div>
+                                    <div class="btn" @click="$router.push({ name: 'myCollection' })">我的收藏</div>
+                                    <div class="btn" @click="$router.push({ name: 'release' })">我的发布</div>
+                                    <div class="btn" @click="$router.push({ name: 'docking' })">我的需求</div>
                                     <div class="btn" @click="logout">退出登录</div>
                                 </div>
                             </el-popover>
                             <div class="login-info" v-else>
                                 <div class="btn" @click="$router.push({ name: 'login' })">登录</div>
                                 <div class="divider"></div>
-                                <div class="btn" @click="$router.push({ name: 'register' })">
-                                    注册
-                                </div>
+                                <div class="btn" @click="$router.push({ name: 'register' })">注册</div>
                             </div>
                         </div>
                     </div>

+ 39 - 0
src/main/jmrh/src/views/app.vue

@@ -0,0 +1,39 @@
+<template>
+    <div class="qrcode-container">
+        <qrcode :value="downloadUrl" :options="{ width: 300 }"></qrcode>
+        <div class="tip">
+            请用手机浏览器扫描上方二维码下载安装APP<br /><a download="jmrh.apk" :href="downloadUrl">或直接下载apk</a>
+        </div>
+    </div>
+</template>
+<script>
+import qrcode from '@chenfengyuan/vue-qrcode';
+import resolveUrl from 'resolve-url';
+export default {
+    components: { qrcode },
+    data() {
+        return {
+            downloadUrl: resolveUrl(this.$baseUrl, '/files/jmrh.apk')
+        };
+    }
+};
+</script>
+<style lang="less" scoped>
+.qrcode-container {
+    .flex-col();
+    align-items: center;
+    justify-content: center;
+    padding: 30px 0;
+    .qrcode {
+    }
+    .tip {
+        text-align: center;
+        margin-top: 25px;
+        font-size: 18px;
+        line-height: 1.5;
+        a {
+            color: #999999;
+        }
+    }
+}
+</style>

+ 7 - 3
src/main/jmrh/src/views/login/register.vue

@@ -2,7 +2,7 @@
     <div class="login">
         <div class="login_title">
             <span class="title">注册账号</span>
-            <span style="color: #C8C9CC;cursor: pointer;" @click="$router.push({ name: 'home' })">返回首页</span>
+            <span style="color: #c8c9cc; cursor: pointer" @click="$router.push({ name: 'home' })">返回首页</span>
         </div>
         <div class="form">
             <el-form :model="formData" :rules="rules" label-width="80px" label-position="right" ref="form">
@@ -102,8 +102,12 @@ export default {
                         required: true,
                         message: '请输入验证码',
                         trigger: 'blur'
-                    } /* ,
-                    { validator: validateCode, trigger: 'blur' } */
+                    },
+                    {
+                        pattern: /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,30}/,
+                        message: '密码必须包含大小写字母和数字,且长度为8-30',
+                        trigger: 'blur'
+                    }
                 ],
                 passwordagain: [
                     { required: true, message: '请输入确认密码', trigger: 'blur' },

+ 77 - 1
src/main/jmrh/yarn.lock

@@ -822,6 +822,13 @@
     lodash "^4.17.13"
     to-fast-properties "^2.0.0"
 
+"@chenfengyuan/vue-qrcode@^1.0.2":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/@chenfengyuan/vue-qrcode/-/vue-qrcode-1.0.2.tgz#37d71902e166e1ae58176bd6cb9c40905c1b0949"
+  integrity sha512-hwy1d4YMJAyEh+V7dLPG8eAKACRvugzSB4ylwb6QNqo84KHTF50/5EJcBYdUhTRPfAqrxG0i6jDAXONWOGyQbQ==
+  dependencies:
+    qrcode "^1.4.4"
+
 "@hapi/address@2.x.x":
   version "2.1.4"
   resolved "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
@@ -1812,6 +1819,11 @@ base64-js@^1.0.2:
   resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
   integrity sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=
 
+base64-js@^1.3.1:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+  integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
 base@^0.11.1:
   version "0.11.2"
   resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
@@ -2049,11 +2061,34 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5:
     node-releases "^1.1.53"
     pkg-up "^2.0.0"
 
+buffer-alloc-unsafe@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+  integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
+
+buffer-alloc@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+  integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+  dependencies:
+    buffer-alloc-unsafe "^1.1.0"
+    buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+  integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+
 buffer-from@^1.0.0:
   version "1.1.1"
   resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
   integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=
 
+buffer-from@^1.1.1:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+  integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
 buffer-indexof@^1.0.0:
   version "1.1.1"
   resolved "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
@@ -2078,6 +2113,14 @@ buffer@^4.3.0:
     ieee754 "^1.1.4"
     isarray "^1.0.0"
 
+buffer@^5.4.3:
+  version "5.7.1"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+  integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+  dependencies:
+    base64-js "^1.3.1"
+    ieee754 "^1.1.13"
+
 builtin-status-codes@^3.0.0:
   version "3.0.0"
   resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -3215,6 +3258,11 @@ diffie-hellman@^5.0.0:
     miller-rabin "^4.0.0"
     randombytes "^2.0.0"
 
+dijkstrajs@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257"
+  integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==
+
 dir-glob@^2.0.0, dir-glob@^2.2.2:
   version "2.2.2"
   resolved "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
@@ -4976,6 +5024,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1:
   dependencies:
     postcss "^7.0.14"
 
+ieee754@^1.1.13:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+  integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
 ieee754@^1.1.4:
   version "1.1.13"
   resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
@@ -5488,6 +5541,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
   integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
 
+isarray@^2.0.1:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+  integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
 isexe@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -7342,6 +7400,11 @@ plugin-error@^0.1.2:
     arr-union "^2.0.1"
     extend-shallow "^1.1.2"
 
+pngjs@^3.3.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
+  integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==
+
 pnp-webpack-plugin@^1.6.4:
   version "1.6.4"
   resolved "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149"
@@ -7854,6 +7917,19 @@ q@^1.1.2:
   resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
   integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
 
+qrcode@^1.4.4:
+  version "1.4.4"
+  resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83"
+  integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==
+  dependencies:
+    buffer "^5.4.3"
+    buffer-alloc "^1.2.0"
+    buffer-from "^1.1.1"
+    dijkstrajs "^1.0.1"
+    isarray "^2.0.1"
+    pngjs "^3.3.0"
+    yargs "^13.2.4"
+
 qs@6.7.0:
   version "6.7.0"
   resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
@@ -10125,7 +10201,7 @@ yargs-parser@^18.1.1:
     camelcase "^5.0.0"
     decamelize "^1.2.0"
 
-yargs@^13.3.2:
+yargs@^13.2.4, yargs@^13.3.2:
   version "13.3.2"
   resolved "https://registry.npm.taobao.org/yargs/download/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
   integrity sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=

+ 48 - 12
src/main/resources/application.yaml

@@ -24,7 +24,7 @@ spring:
       auto-commit: true
       idle-timeout: 30000
       max-lifetime: 1800000
-      connection-timeout: 30000
+      connection-timeout: 10000
       connection-test-query: SELECT 1
   jpa:
     database: MySQL
@@ -34,14 +34,6 @@ spring:
     properties:
       hibernate:
         enable_lazy_load_no_trans: true
-  redis:
-    host: 127.0.0.1
-    port: 6379
-    lettuce:
-      pool:
-        max_active: 8
-        max_idle: 8
-        min_idle: 0
   servlet:
     multipart:
       max_file_size: 100MB
@@ -52,7 +44,7 @@ spring:
 jwt:
   secret: XvAD0kboD76Dpebm
   header: Authorization
-  expiration: 2592000 #30days
+  expiration: 1800 #30min
 wx:
   mp:
     app_id: wx2375cba2eec2c479
@@ -73,8 +65,9 @@ wx:
     notifyUrl: http://zmj.izouma.com/wx/payNotify
     refundNotifyUrl: http://zmj.izouma.com/wx/refundNotify
 storage:
-  provider: aliyun
-  local_path: /var/www/upload/
+  provider: local
+  local_path: /Users/drew/Projects/Java/jmrh/upload/
+  prefix: /
 aliyun:
   access-key-id: PXzJyah5rZfWHIIH
   access-key-secret: e1MS6j0wypXJrw8CM0hObZu8qKbfah
@@ -86,6 +79,7 @@ general:
 encrypt:
   body:
     aes-key: gmMRQzojuaSVGg3weNe6J5BCjDyH5BML
+  enable: false
 ---
 
 spring:
@@ -102,4 +96,46 @@ spring:
     url: jdbc:mysql://mysql.izouma.com/jmrh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
     username: microball
     password: 2wsx@WSX#EDC
+storage:
+  provider: local
+  local_path: /var/www/upload/
+
+---
+
+spring:
+  profiles: prod1
+  datasource:
+    url: jdbc:mysql://10.4.115.11/jmrh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8
+    username: root
+    password: 8mGb6*wBMs$#3Hak
+storage:
+  provider: local
+  local_path: /var/www/upload/
+
+---
+
+spring:
+  profiles: prod2
+  datasource:
+    url: jdbc:mysql://10.5.23.169/jmrh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8
+    username: root
+    password: 8mGb6*wBMs$#3Hak
+storage:
+  provider: local
+  local_path: /var/www/upload/
 
+---
+
+spring:
+  profiles: prod3
+  datasource:
+    url: jdbc:mysql://10.5.23.173/jmrh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8
+    username: root
+    password: 8mGb6*wBMs$#3Hak
+storage:
+  provider: local
+  local_path: /var/www/upload/
+encrypt:
+  body:
+    aes-key: gmMRQzojuaSVGg3weNe6J5BCjDyH5BML
+  enable: true

+ 69 - 0
src/main/resources/logback-spring.xml

@@ -96,4 +96,73 @@
         <logger name="io.swagger.models.parameters.AbstractSerializableParameter" level="ERROR"/>
     </springProfile>
 
+    <springProfile name="prod1">
+        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+            <encoder>
+                <pattern>${FILE_LOG_PATTERN}</pattern>
+            </encoder>
+            <file>/var/www/jmrh/app.log</file>
+            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+                <fileNamePattern>app.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
+                <maxFileSize>10MB</maxFileSize>
+                <maxHistory>60</maxHistory>
+            </rollingPolicy>
+        </appender>
+        <root level="INFO">
+            <appender-ref ref="FILE"/>
+        </root>
+        <logger name="org.hibernate.SQL" level="DEBUG"/>
+        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+        <logger name="org.springframework.jdbc.core.JdbcTemplate" level="DEBUG"/>
+        <logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="TRACE"/>
+        <logger name="cn.binarywang.wx.miniapp" level="DEBUG"/>
+        <logger name="io.swagger.models.parameters.AbstractSerializableParameter" level="ERROR"/>
+    </springProfile>
+
+    <springProfile name="prod2">
+        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+            <encoder>
+                <pattern>${FILE_LOG_PATTERN}</pattern>
+            </encoder>
+            <file>/var/www/jmrh/app.log</file>
+            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+                <fileNamePattern>app.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
+                <maxFileSize>10MB</maxFileSize>
+                <maxHistory>60</maxHistory>
+            </rollingPolicy>
+        </appender>
+        <root level="INFO">
+            <appender-ref ref="FILE"/>
+        </root>
+        <logger name="org.hibernate.SQL" level="DEBUG"/>
+        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+        <logger name="org.springframework.jdbc.core.JdbcTemplate" level="DEBUG"/>
+        <logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="TRACE"/>
+        <logger name="cn.binarywang.wx.miniapp" level="DEBUG"/>
+        <logger name="io.swagger.models.parameters.AbstractSerializableParameter" level="ERROR"/>
+    </springProfile>
+
+    <springProfile name="prod3">
+        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+            <encoder>
+                <pattern>${FILE_LOG_PATTERN}</pattern>
+            </encoder>
+            <file>/var/www/jmrh/app.log</file>
+            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+                <fileNamePattern>app.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
+                <maxFileSize>10MB</maxFileSize>
+                <maxHistory>60</maxHistory>
+            </rollingPolicy>
+        </appender>
+        <root level="INFO">
+            <appender-ref ref="FILE"/>
+        </root>
+        <logger name="org.hibernate.SQL" level="DEBUG"/>
+        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+        <logger name="org.springframework.jdbc.core.JdbcTemplate" level="DEBUG"/>
+        <logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="TRACE"/>
+        <logger name="cn.binarywang.wx.miniapp" level="DEBUG"/>
+        <logger name="io.swagger.models.parameters.AbstractSerializableParameter" level="ERROR"/>
+    </springProfile>
+
 </configuration>

+ 1 - 1
src/main/vue/.env.production

@@ -1 +1 @@
-VUE_APP_BASE_URL=http://jmrh.izouma.com/
+VUE_APP_BASE_URL=/

+ 0 - 164
src/main/vue/public/未命名文件夹/icons/default/icons.js

@@ -1,164 +0,0 @@
-tinymce.IconManager.add('default', {
-  icons: {
-    'accessibility-check': '<svg width="24" height="24"><path d="M12 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 01-1-1v-5c0-.6-.4-1-1-1a1 1 0 00-1 1v5c0 .6-.4 1-1 1a1 1 0 01-1-1V9H4a1 1 0 110-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',
-    'action-next': '<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 00-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 10-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',
-    'action-prev': '<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 001.4-1.4L12 6.6l-7.7 7.7a1 1 0 001.4 1.4L12 9.4l6.3 6.3z"/></svg>',
-    'align-center': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'align-justify': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'align-left': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'align-none': '<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 110-2h9.2zm4 0h.8a1 1 0 010 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h6.8zm4 0H19a1 1 0 010 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h4.4zm4 0H19a1 1 0 010 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 010-2h2zm4 0h8a1 1 0 010 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',
-    'align-right': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'arrow-left': '<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 001.4-1V6a1 1 0 00-1.4-.9l-12 6a1 1 0 000 1.8z" fill-rule="evenodd"/></svg>',
-    'arrow-right': '<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 015 18V6a1 1 0 011.4-.9l12 6a1 1 0 010 1.8z" fill-rule="evenodd"/></svg>',
-    'bold': '<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 01-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',
-    'bookmark': '<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 00-1 1z" fill-rule="nonzero"/></svg>',
-    'border-width': '<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 010 2H5a1 1 0 010-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 110-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 01-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>',
-    'brightness': '<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 01-.7-.3A1 1 0 0111 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3h-1a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 01-.7.3H5a1 1 0 01-.7-.3A1 1 0 014 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 01-.8.3 1 1 0 01-.6-.3l-.8-.7a1 1 0 01-.3-.8c0-.2.1-.5.3-.7a1 1 0 011.4 0zm-10-7l-.7-.8a1 1 0 01-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.8-.3zm10 0a1 1 0 01-.8.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 010 1.4l-.8.8a1 1 0 01-.6.3 1 1 0 01-.8-.3 1 1 0 01-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 013.7 2.4 4 4 0 010 3.2A4 4 0 0112 16a4 4 0 01-3.7-2.4 4 4 0 010-3.2A4 4 0 0112 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',
-    'browse': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 11-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L13 13.4V20a1 1 0 01-2 0v-6.6z" fill-rule="nonzero"/></svg>',
-    'cancel': '<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 110 14.8 7.4 7.4 0 010-14.8zM12 3a9 9 0 100 18 9 9 0 000-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',
-    'change-case': '<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 01-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 01-1 .7h-.2a.7.7 0 01-.7-1l4-12a1 1 0 012 0l4 12a.7.7 0 01-.8 1h-.2a1 1 0 01-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',
-    'character-count': '<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 01-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 00-.5-.1 1 1 0 00-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 00-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 001.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 00-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 00-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 01-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 01-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',
-    'checklist-rtl': '<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',
-    'checklist': '<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8a1 1 0 010 2h-8a1 1 0 010-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',
-    'checkmark': '<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 011.6 1.2l-8 12a1 1 0 01-1.5.1l-5-5a1 1 0 111.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',
-    'chevron-down': '<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 010-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',
-    'chevron-left': '<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 010-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',
-    'chevron-right': '<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 010-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 010-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',
-    'chevron-up': '<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 010-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',
-    'close': '<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 01-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 01-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 011.5-1.5l3.8 3.9 3.8-3.9a1 1 0 011.5 1.5z" fill-rule="evenodd"/></svg>',
-    'code-sample': '<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 01-.8 2 2.8 2.8 0 01.8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 01-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 01.8-2 2.8 2.8 0 01-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 01-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 01-.5-.5V17a3 3 0 001-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',
-    'color-levels': '<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0118 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 01-3.7 3 5.7 5.7 0 01-3.2 0A5.9 5.9 0 017.6 18a6.2 6.2 0 01-1.4-2.6 6.7 6.7 0 010-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 012.3-4A20 20 0 0112 4a26.4 26.4 0 013.2 3.4 18.2 18.2 0 012.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 00-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 01-1.3 3 5.3 5.3 0 01-2.3 1.5 4.9 4.9 0 01-2 .1 4.3 4.3 0 002.4.8 4 4 0 002-.6 4 4 0 001.5-1.5z" fill-rule="evenodd"/></svg>',
-    'color-picker': '<svg width="24" height="24"><path d="M12 3a9 9 0 000 18 1.5 1.5 0 001.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 005-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z" fill-rule="nonzero"/></svg>',
-    'color-swatch-remove-color': '<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',
-    'color-swatch': '<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',
-    'comment-add': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 010 2h-2v2a1 1 0 01-2 0v-2H9a1 1 0 010-2h2V8a1 1 0 012 0v2z"/></g></svg>',
-    'comment': '<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/></svg>',
-    'contrast': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-6 8a6 6 0 006 6V6a6 6 0 00-6 6z" fill-rule="evenodd"/></svg>',
-    'copy': '<svg width="24" height="24"><path d="M16 3H6a2 2 0 00-2 2v11h2V5h10V3zm1 4a2 2 0 012 2v10a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',
-    'crop': '<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 01-1-1v-2H7V9H5a1 1 0 110-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',
-    'cut': '<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 010 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2 1.6 1.6 0 00-.8 0 2.6 2.6 0 00-.8.3 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3 2.8 2.8 0 001-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3 1.5 1.5 0 00-.8 0 1 1 0 00-.4.2 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4l.3.4.3.4a2.8 2.8 0 00.8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',
-    'document-properties': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',
-    'drag': '<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',
-    'duplicate': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7a2 2 0 012 2v2z"/><path d="M17 14h1a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1h-1a1 1 0 010-2h1v-1a1 1 0 012 0v1z"/></g></svg>',
-    'edit-block': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 00-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',
-    'edit-image': '<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 00-2-2H7v2h11v9zM6 17h15a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1H6a2 2 0 01-2-2V7H3a1 1 0 110-2h1V4a1 1 0 112 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',
-    'embed-page': '<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0119 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 008 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 00-4 4.5h2.2zm-3.4 0a12 12 0 012.8-4 12 12 0 00-5 4h2.2z" fill-rule="nonzero"/></svg>',
-    'embed': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 010 .8l-5.6 4A.5.5 0 019 16V8a.5.5 0 01.8-.4z" fill-rule="nonzero"/></svg>',
-    'emoji': '<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 100 16 8 8 0 000-16zm0 14.5a6.5 6.5 0 110-13 6.5 6.5 0 010 13z" fill-rule="nonzero"/></svg>',
-    'fill': '<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 002.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 002-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',
-    'flip-horizontally': '<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 00-2 2zm14-2v2h2a2 2 0 00-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 002-2h-2v2z" fill-rule="nonzero"/></svg>',
-    'flip-vertically': '<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 00-2 2v3h2V6h10v3h2V6a2 2 0 00-2-2zm2 14h-2v2a2 2 0 002-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',
-    'format-painter': '<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 00-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',
-    'format': '<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 010 2h-4v11a1 1 0 01-2 0V7H7a1 1 0 110-2h10z"/></svg>',
-    'fullscreen': '<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 110-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 11-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 111.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 110-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 110 1.7H5a.9.9 0 01-.9-.9v-4.4a.9.9 0 111.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 01-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 010 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',
-    'gallery': '<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 01-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 110-4 2 2 0 010 4zM4.5 4h15a.5.5 0 110 1h-15a.5.5 0 010-1zm2-2h11a.5.5 0 110 1h-11a.5.5 0 010-1z"/></svg>',
-    'gamma': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 00-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 01.6.5l.1.3a8.5 8.5 0 01.3.6l1.9 4.6 2-5.2a1 1 0 011-.6.5.5 0 01.5.6L13 14v2.8a.7.7 0 01-1.4 0z" fill-rule="nonzero"/></svg>',
-    'help': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 00-6 9 6.3 6.3 0 001.4 2l1 1a6.3 6.3 0 003.6 1 6.5 6.5 0 006-9 6.3 6.3 0 00-1.4-2l-1-1a6.3 6.3 0 00-3.6-1zM12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4z"/><path d="M9.6 9.7a.7.7 0 01-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 00-.8.8.8.8 0 01-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',
-    'highlight-bg-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 012.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',
-    'home': '<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',
-    'horizontal-rule': '<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',
-    'image-options': '<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',
-    'image': '<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 100-4 2 2 0 000 4z" fill-rule="nonzero"/></svg>',
-    'indent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',
-    'info': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',
-    'insert-character': '<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 001.8-2.9 6.3 6.3 0 00-.1-4.1 5.8 5.8 0 00-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 00-3.9 1.8 6.3 6.3 0 00-1.3 6 6.2 6.2 0 001.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 014 11c0-1 .2-1.9.6-2.7A7 7 0 016.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 015.7 2 7 7 0 011.7 2.3 6 6 0 01.2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 01-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',
-    'insert-time': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 100-14 7 7 0 000 14zm0 2a9 9 0 110-18 9 9 0 010 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 00-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',
-    'invert': '<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 01-3.1 1.9 6.1 6.1 0 01-5.5-1.6A5.8 5.8 0 016 14v-.3l.1-1.2A13.9 13.9 0 017.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 00.2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 00-3-4.2L12 6a26.1 26.1 0 00-2.2 2.5l-1-1a20.9 20.9 0 012.9-3.3L12 4l1 .8a22.2 22.2 0 014 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',
-    'italic': '<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',
-    'line': '<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',
-    'link': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2.1 2a2 2 0 102.7 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2-2a2 2 0 10-2.6-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',
-    'list-bull-circle': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 26a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 36a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
-    'list-bull-default': '<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
-    'list-bull-square': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
-    'list-num-default-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',
-    'list-num-default': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',
-    'list-num-lower-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-greek-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-greek': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-lower-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',
-    'list-num-lower-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',
-    'list-num-upper-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-upper-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
-    'list-num-upper-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',
-    'list-num-upper-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',
-    'lock': '<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 00-.3-.7A1 1 0 0013 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7z" fill-rule="evenodd"/></svg>',
-    'ltr': '<svg width="24" height="24"><path d="M11 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 017.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',
-    'more-drawer': '<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',
-    'new-document': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',
-    'new-tab': '<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',
-    'non-breaking': '<svg width="24" height="24"><path d="M11 11H8a1 1 0 110-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 01-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',
-    'notice': '<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',
-    'ordered-list-rtl': '<svg width="24" height="24"><path d="M6 17h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 110-2zm13-1v3.5a.5.5 0 11-1 0V5h-.5a.5.5 0 110-1H19zm-1 8.8l.2.2h1.3a.5.5 0 110 1h-1.6a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2h-1.3a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 010-1h1.2a.3.3 0 100-.6h-1.3a.4.4 0 110-.8h1.3a.3.3 0 000-.6h-1.2a.5.5 0 110-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',
-    'ordered-list': '<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 110-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 01-.5-.5V5h-.5a.5.5 0 010-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2H4.5a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 010-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 110-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 110-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',
-    'orientation': '<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 010-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 11-4.3 16.9l1.5-1.5A7 7 0 1013 6h-1z" fill-rule="nonzero"/></svg>',
-    'outdent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm1.6-3.8a1 1 0 01-1.2 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 011.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',
-    'page-break': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 01-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 01-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',
-    'paragraph': '<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z"/></svg>',
-    'paste-text': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',
-    'paste': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',
-    'permanent-pen': '<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 010-3L14 3l1 1-7.3 7.3a1 1 0 000 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 01-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',
-    'plus': '<svg width="24" height="24"><path d="M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 01.1 2H13v6a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H11V5c0-.6.4-1 1-1z"/></svg>',
-    'preferences': '<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 01-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 01-1.4 0l-1.5-1.2a6.2 6.2 0 01-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 01-1-.9l-.2-1.9a5.8 5.8 0 01-1.5-.6l-1.5 1.2a1 1 0 01-1.4 0l-.7-.7a1 1 0 010-1.4l1.2-1.5a6.2 6.2 0 01-.6-1.5l-1.9-.2a1 1 0 01-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 01.6-1.5L5.2 7.3a1 1 0 010-1.4l.7-.7a1 1 0 011.4 0l1.5 1.2a6.2 6.2 0 011.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 011.5.6l1.5-1.2a1 1 0 011.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 01.6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 100-6 3 3 0 000 6z" fill-rule="evenodd"/></svg>',
-    'preview': '<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 002.1-2.8 15.7 15.7 0 00-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 00-6.7 3.2A16.2 16.2 0 003.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 012.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 01-2.8-3.7 1 1 0 010-1zm12-3.3a2 2 0 102.7 2.6 4 4 0 11-2.6-2.6z" fill-rule="nonzero"/></svg>',
-    'print': '<svg width="24" height="24"><path d="M18 8H6a3 3 0 00-3 3v6h2v3h14v-3h2v-6a3 3 0 00-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',
-    'quote': '<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3z" fill-rule="nonzero"/></svg>',
-    'redo': '<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 11-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 111.4-1.4l5 5a1 1 0 010 1.4l-5 5a1 1 0 01-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',
-    'reload': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 011-1l5 .4a1 1 0 11-.2 2l-2.2-.2a7.8 7.8 0 008.4.2 7.5 7.5 0 003.5-6.4 1 1 0 112 0 9.5 9.5 0 01-4.5 8 9.9 9.9 0 01-10.2 0l.4 1.4a1 1 0 11-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 00-9.5-1 7.5 7.5 0 00-3.6 7 1 1 0 01-2 0 9.5 9.5 0 014.5-8.6 10 10 0 0110.9.3l-.3-1a1 1 0 012-.5l1.1 4.8a1 1 0 01-1 1.2l-5-.4a1 1 0 01-.9-1z"/></g></svg>',
-    'remove-formatting': '<svg width="24" height="24"><path d="M13.2 6a1 1 0 010 .2l-2.6 10a1 1 0 01-1 .8h-.2a.8.8 0 01-.8-1l2.6-10H8a1 1 0 110-2h9a1 1 0 010 2h-3.8zM5 18h7a1 1 0 010 2H5a1 1 0 010-2zm13 1.5L16.5 18 15 19.5a.7.7 0 01-1-1l1.5-1.5-1.5-1.5a.7.7 0 011-1l1.5 1.5 1.5-1.5a.7.7 0 011 1L17.5 17l1.5 1.5a.7.7 0 01-1 1z" fill-rule="evenodd"/></svg>',
-    'remove': '<svg width="24" height="24"><path d="M16 7h3a1 1 0 010 2h-1v9a3 3 0 01-3 3H9a3 3 0 01-3-3V9H5a1 1 0 110-2h3V6a3 3 0 013-3h2a3 3 0 013 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 00-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 012 0v4a1 1 0 01-2 0v-4zm4 0a1 1 0 012 0v4a1 1 0 01-2 0v-4z" fill-rule="nonzero"/></svg>',
-    'resize-handle': '<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 119 2l-7 7A.5.5 0 111 8l7-7zM8.1 5.1A.5.5 0 119 6l-3 3A.5.5 0 115 8l3-3z"/></g></svg>',
-    'resize': '<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-6a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3A1 1 0 014 11V5z" fill-rule="evenodd"/></svg>',
-    'restore-draft': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></g></svg>',
-    'rotate-left': '<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></svg>',
-    'rotate-right': '<svg width="24" height="24"><path d="M20 8V5a1 1 0 012 0v6c0 .6-.4 1-1 1h-6a1 1 0 010-2h4.3L16 7A7.2 7.2 0 007.7 6a7 7 0 003 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 011.4 1.5A9.2 9.2 0 012.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',
-    'rtl': '<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 014.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L8 5zm12 11.2a1 1 0 11-1 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 111 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',
-    'save': '<svg width="24" height="24"><path d="M5 16h14a2 2 0 012 2v2a2 2 0 01-2 2H5a2 2 0 01-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 10-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 10-1.4-1.4L13 11.6V4a1 1 0 00-2 0v7.6z" fill-rule="nonzero"/></svg>',
-    'search': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12z" fill-rule="nonzero"/></svg>',
-    'select-all': '<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 00-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 00-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 002-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',
-    'selected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 00-1 1L9.6 17 18 8.6a.7.7 0 000-1 .7.7 0 00-1 0l-7.4 7.3z"/></svg>',
-    'settings': '<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V8H5a1 1 0 110-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V13H5a1 1 0 010-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V18H5a1 1 0 010-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',
-    'sharpen': '<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',
-    'sort-asc': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M4 8h5a1 1 0 110 2H4a1 1 0 110-2zm0 8h8a1 1 0 010 2H4a1 1 0 010-2zm0-4h7a1 1 0 010 2H4a1 1 0 010-2z"/><path fill-rule="nonzero" d="M16 8.4l-2.3 2.3a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L18 8.4V18a1 1 0 01-2 0V8.4z"/></g></svg>',
-    'sort-dsc': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M4 16h5a1 1 0 000-2H4a1 1 0 000 2zm0-8h8a1 1 0 000-2H4a1 1 0 100 2zm0 4h7a1 1 0 000-2H4a1 1 0 000 2z"/><path fill-rule="nonzero" d="M16 15.6l-2.3-2.3a1 1 0 00-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 00-1.4-1.4L18 15.6V6a1 1 0 00-2 0v9.6z"/></g></svg>',
-    'sourcecode': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 010-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 00-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',
-    'spell-check': '<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 01-.7-.3 1 1 0 01-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',
-    'strike-through': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 017 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 010 2H5a1 1 0 010-2z" fill-rule="nonzero"/></g></svg>',
-    'subscript': '<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 00-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 01-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',
-    'superscript': '<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',
-    'table-cell-properties': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',
-    'table-cell-select-all': '<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z" opacity=".2"/></g></svg>',
-    'table-cell-select-inner': '<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z" opacity=".2"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z"/></g></svg>',
-    'table-delete-column': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5l1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',
-    'table-delete-row': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8l1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',
-    'table-delete-table': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="M14.4 8.6l1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></g></svg>',
-    'table-insert-column-after': '<svg width="24" height="24"><path fill-rule="nonzero" d="M20 4c.6 0 1 .4 1 1v2a1 1 0 01-2 0V6h-8v12h8v-1a1 1 0 012 0v2c0 .5-.4 1-.9 1H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H17v2a1 1 0 01-2 .1V13h-2a1 1 0 01-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',
-    'table-insert-column-before': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H4a1 1 0 01-1-1v-2a1 1 0 012 0v1h8V6H5v1a1 1 0 11-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H9v2a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',
-    'table-insert-row-above': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4a1 1 0 110 2H5v6h14V6h-1a1 1 0 010-2h2c.6 0 1 .4 1 1v13a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 010 2h-2v2a1 1 0 01-2 .1V8H9a1 1 0 010-2h2V4c0-.6.4-1 1-1z"/></svg>',
-    'table-insert-row-after': '<svg width="24" height="24"><path fill-rule="nonzero" d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 01.1 2H13v2a1 1 0 01-2 .1V18H9a1 1 0 01-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 010-2h1v-6H5v6h1a1 1 0 010 2H4a1 1 0 01-1-1V6c0-1.1.9-2 2-2h14a2 2 0 012 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',
-    'table-left-header': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 9h-4v5h4v-5zm-6 0H9v5h4v-5zm0-7H9v5h4V6zm6 0h-4v5h4V6z"/></svg>',
-    'table-merge-cells': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15.5V18h3v-2.5H5zm14-5h-9V18h9v-7.5zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6zm-8 7.5h3v-3H5v3z"/></svg>',
-    'table-row-properties': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',
-    'table-split-cells': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1l1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',
-    'table-top-header': '<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 11H5v3h6v-3zm8 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></svg>',
-    'table': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 14v4h6v-4H5zm14 0h-6v4h6v-4zm0-6h-6v4h6V8zM5 12h6V8H5v4z"/></svg>',
-    'template': '<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 116 0v4h4a2 2 0 012 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 10-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',
-    'temporary-placeholder': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 111 0V6H15v1.6a8 8 0 11-6 0zm-2.6 5.3a.5.5 0 00.3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 013.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 00-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',
-    'text-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',
-    'toc': '<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'translate': '<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 010-1l3.1-3A12.4 12.4 0 016.7 9H8a10.1 10.1 0 001.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 110-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 01-1 2.4 13.5 13.5 0 01-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 01-.4.7 1 1 0 01-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 01-1 .7.5.5 0 01-.4-.7l2.7-7.4a1 1 0 012 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',
-    'underline': '<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 01-.4 1.8l-1 1.4a5.3 5.3 0 01-5.5 1 5 5 0 01-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 01-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 002.2.8 3.4 3.4 0 002.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',
-    'undo': '<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 01-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 11-1.4 1.4l-5-5a1 1 0 010-1.4l5-5a1 1 0 011.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',
-    'unlink': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2 2a2 2 0 102.6 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2.1-2a2 2 0 10-2.7-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2zM7.6 6.3a.8.8 0 01-1 1.1L3.3 4.2a.7.7 0 111-1l3.2 3.1zM5.1 8.6a.8.8 0 010 1.5H3a.8.8 0 010-1.5H5zm5-3.5a.8.8 0 01-1.5 0V3a.8.8 0 011.5 0V5zm6 11.8a.8.8 0 011-1l3.2 3.2a.8.8 0 01-1 1L16 17zm-2.2 2a.8.8 0 011.5 0V21a.8.8 0 01-1.5 0V19zm5-3.5a.7.7 0 110-1.5H21a.8.8 0 010 1.5H19z" fill-rule="nonzero"/></svg>',
-    'unlock': '<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 00-.3-.7A1 1 0 0016 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',
-    'unordered-list': '<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',
-    'unselected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 00-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',
-    'upload': '<svg width="24" height="24"><path d="M18 19v-2a1 1 0 012 0v3c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-3a1 1 0 012 0v2h12zM11 6.4L8.7 8.7a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L13 6.4V16a1 1 0 01-2 0V6.4z" fill-rule="nonzero"/></svg>',
-    'user': '<svg width="24" height="24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm-8.7-5.3a11 11 0 0017.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',
-    'visualblocks': '<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 01-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 01-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 010 2v7a1 1 0 01-2 0V9h-1v7a1 1 0 01-2 0v-4a2.5 2.5 0 01-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 012 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',
-    'visualchars': '<svg width="24" height="24"><path d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z" fill-rule="evenodd"/></svg>',
-    'warning': '<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',
-    'zoom-in': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-1-9a1 1 0 012 0v6a1 1 0 01-2 0V8zm-2 4a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',
-    'zoom-out': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-3-5a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',
-  }
-});

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/main/vue/public/未命名文件夹/icons/default/icons.min.js


+ 0 - 7
src/main/vue/public/未命名文件夹/icons/default/index.js

@@ -1,7 +0,0 @@
-// Exports the "default" icons for usage with module loaders
-// Usage:
-//   CommonJS:
-//     require('tinymce/icons/default')
-//   ES2015:
-//     import 'tinymce/icons/default'
-require('./icons.js');

+ 0 - 59
src/main/vue/public/未命名文件夹/skins/content/dark/content.css

@@ -1,59 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body {
-  background-color: #2f3742;
-  color: #dfe0e4;
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-  line-height: 1.4;
-  margin: 1rem;
-}
-a {
-  color: #4099ff;
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #6d737b;
-  padding: 0.4rem;
-}
-figure {
-  display: table;
-  margin: 1rem auto;
-}
-figure figcaption {
-  color: #8a8f97;
-  display: block;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #6d737b;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-code {
-  background-color: #6d737b;
-  border-radius: 3px;
-  padding: 0.1rem 0.2rem;
-}
-/* Make text in selected cells in tables dark and readable */
-td[data-mce-selected],
-th[data-mce-selected] {
-  color: #333;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #6d737b;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #6d737b;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

+ 0 - 7
src/main/vue/public/未命名文件夹/skins/content/dark/content.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}

+ 0 - 49
src/main/vue/public/未命名文件夹/skins/content/default/content.css

@@ -1,49 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-  line-height: 1.4;
-  margin: 1rem;
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #ccc;
-  padding: 0.4rem;
-}
-figure {
-  display: table;
-  margin: 1rem auto;
-}
-figure figcaption {
-  color: #999;
-  display: block;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #ccc;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-code {
-  background-color: #e8e8e8;
-  border-radius: 3px;
-  padding: 0.1rem 0.2rem;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #ccc;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #ccc;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

+ 0 - 7
src/main/vue/public/未命名文件夹/skins/content/default/content.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

+ 0 - 54
src/main/vue/public/未命名文件夹/skins/content/document/content.css

@@ -1,54 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-@media screen {
-  html {
-    background: #f4f4f4;
-    min-height: 100%;
-  }
-}
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-}
-@media screen {
-  body {
-    background-color: #fff;
-    box-shadow: 0 0 4px rgba(0, 0, 0, 0.15);
-    box-sizing: border-box;
-    margin: 1rem auto 0;
-    max-width: 820px;
-    min-height: calc(100vh - 1rem);
-    padding: 4rem 6rem 6rem 6rem;
-  }
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #ccc;
-  padding: 0.4rem;
-}
-figure figcaption {
-  color: #999;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #ccc;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #ccc;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #ccc;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

+ 0 - 7
src/main/vue/public/未命名文件夹/skins/content/document/content.min.css

@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

+ 0 - 50
src/main/vue/public/未命名文件夹/skins/content/writer/content.css

@@ -1,50 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body {
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-  line-height: 1.4;
-  margin: 1rem auto;
-  max-width: 900px;
-}
-table {
-  border-collapse: collapse;
-}
-table th,
-table td {
-  border: 1px solid #ccc;
-  padding: 0.4rem;
-}
-figure {
-  display: table;
-  margin: 1rem auto;
-}
-figure figcaption {
-  color: #999;
-  display: block;
-  margin-top: 0.25rem;
-  text-align: center;
-}
-hr {
-  border-color: #ccc;
-  border-style: solid;
-  border-width: 1px 0 0 0;
-}
-code {
-  background-color: #e8e8e8;
-  border-radius: 3px;
-  padding: 0.1rem 0.2rem;
-}
-.mce-content-body:not([dir=rtl]) blockquote {
-  border-left: 2px solid #ccc;
-  margin-left: 1.5rem;
-  padding-left: 1rem;
-}
-.mce-content-body[dir=rtl] blockquote {
-  border-right: 2px solid #ccc;
-  margin-right: 1.5rem;
-  padding-right: 1rem;
-}

Некоторые файлы не были показаны из-за большого количества измененных файлов