mobile/pages/branch/admin/activity/edit.vue
@@ -1,11 +1,11 @@
<template>
   <view class="activity-container" :data-theme='theme()' :class="theme() || ''">
      <form @submit="formSubmit" @reset="formReset">
      <form @submit="save" @reset="formReset">
         <view class="activity-form p20 pb150">
            <view class="form-section bg-white radius24">
               <view class="form-item border-b-e">
                  <textarea class="ww100 f28 lh150" placeholder-class="grary9" style="height: 100rpx;"
                   v-model="formData.name" placeholder="请输入活动标题"></textarea>
                     v-model="formData.name" placeholder="请输入活动标题"></textarea>
               </view>
               <view class="form-item">
                  <view class="gray6 f26">请上传活动封面图和分享海报(非必传)</view>
@@ -45,16 +45,23 @@
            <view class="form-section bg-white radius24">
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">活动分类</view>
                  <picker class="" value="" @change="changeCategory" :range="category" range-key='name' :value="category_index">
                  <picker class="" value="" @change="changeCategory" :range="category" range-key='name'
                     :value="category_index">
                     <view class="d-s-c">
                        <view class="make-item input-box flex-1">{{category[category_index].name|| '请选择'}}</view>
                        <view class="make-item input-box flex-1">{{category[category_index].name|| '请选择'}}
                        </view>
                        <view class="icon iconfont icon-jiantou f24"></view>
                     </view>
                  </picker>
               </view>
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">是否走访企业</view>
                  <switch style="transform: scale(0.7); margin-right: -20rpx;" :checked="is_checked_visit" @change="onChangeVisit" />
                  <switch style="transform: scale(0.7); margin-right: -20rpx;" :checked="is_checked_visit"
                     @change="onChangeVisit" />
               </view>
               <view class="form-item d-b-c border-b-e" v-if="is_checked_visit">
                  <view class="item-title">被走访企业名称</view>
                  <input type="text" v-model="formData.visit_supplier_name" class="ww100" placeholder="商户没有入驻时,请输入被走访企业名称" />
               </view>
               <view class="form-item d-b-c border-b-e" v-if="is_checked_visit">
                  <view class="item-title">被走访企业</view>
@@ -67,7 +74,8 @@
                  <view class="item-title">提供场地企业</view>
                  <view class="d-s-c" @click="selectSupplier('space')">
                     <view class="make-item input-box flex-1">{{space_supplier_name||'请选择'}}</view>
                     <view class="icon iconfont icon-guanbi f24 ml10" @click.stop="cancelSpace" v-if="space_supplier_name"></view>
                     <view class="icon iconfont icon-guanbi f24 ml10" @click.stop="cancelSpace"
                        v-if="space_supplier_name"></view>
                     <view class="icon iconfont icon-jiantou f24" v-else></view>
                  </view>
               </view>
@@ -77,63 +85,53 @@
               </view>
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">活动名额(人)</view>
                  <input type="number" v-model="formData.limit_num" class="tr flex-1" placeholder='请输入活动名额,0表示不限制' />
                  <input type="number" v-model="formData.limit_num" class="tr flex-1"
                     placeholder='请输入活动名额,0表示不限制' />
               </view>
               <view class="form-item d-b-c border-b-e" v-if="selectedCategory.limit_num > 0">
                  <view class="gray9 pt10">该分类最多{{selectedCategory.limit_num}}人</view>
               </view>
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">报名开始时间</view>
                  <view class="d-s-c">
                     <uni-datetime-picker
                        type="datetime"
                        v-model="formData.register_start_time"
                        :border="false"
                        :clearIcon="false"
                     />
                     <uni-datetime-picker type="datetime" v-model="formData.register_start_time" :border="false"
                        :clearIcon="false" />
                  </view>
               </view>
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">报名结束时间</view>
                  <view class="d-s-c">
                     <uni-datetime-picker
                        type="datetime"
                        v-model="formData.register_end_time"
                        :border="false"
                        :clearIcon="false"
                     />
                     <uni-datetime-picker type="datetime" v-model="formData.register_end_time" :border="false"
                        :clearIcon="false" />
                  </view>
               </view>
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">活动开始时间</view>
                  <view class="d-s-c">
                     <uni-datetime-picker
                        type="datetime"
                        v-model="formData.activity_start_time"
                        :border="false"
                        :clearIcon="false"
                     />
                     <uni-datetime-picker type="datetime" v-model="formData.activity_start_time" :border="false"
                        :clearIcon="false" />
                  </view>
               </view>
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">活动结束时间</view>
                  <view class="d-s-c">
                     <uni-datetime-picker
                        type="datetime"
                        v-model="formData.activity_end_time"
                        :border="false"
                        :clearIcon="false"
                     />
                     <uni-datetime-picker type="datetime" v-model="formData.activity_end_time" :border="false"
                        :clearIcon="false" />
                  </view>
               </view>
               <view class="form-item border-b-e">
                  <view class="d-b-c">
                     <view class="item-title">活动限定范围(米)</view>
                     <input type="number" v-model="formData.radius" class="tr flex-1" placeholder='请输入活动费用,0表示免费' />
                     <input type="number" v-model="formData.radius" class="tr flex-1"
                        placeholder='请输入活动费用,0表示免费' />
                  </view>
                  <view class="gray9 pt10">用户在限定范围内才能进行核销签到等操作,0为不限制</view>
               </view>
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">活动地址</view>
                  <view class="d-s-c flex-1" @click="chooseLocation">
                     <input type="text" v-model="address.location_address" class="tr flex-1" disabled placeholder='请选择活动地点' />
                     <input type="text" v-model="address.location_address" class="tr flex-1" disabled
                        placeholder='请选择活动地点' />
                     <text class="iconfont icon-jiantou f24"></text>
                  </view>
               </view>
@@ -144,6 +142,98 @@
               <view class="form-item d-b-c border-b-e">
                  <view class="item-title">联系电话</view>
                  <input type="text" v-model="formData.phone" class="tr flex-1" placeholder='请输入活动联系电话' />
               </view>
               <view class="form-item  border-b-e">
                  <view class="item-title">活动内容</view>
                  <view class="editor">
                     <!-- 富文本编辑器 -->
                     <view class='wrapper'>
                        <view class='toolbar' @tap="format" style="height: 160px;overflow-y: auto;">
                           <view :class="formats.bold ? 'ql-active' : ''" class="iconfont icon-zitijiacu"
                              data-name="bold">
                           </view>
                           <view :class="formats.italic ? 'ql-active' : ''" class="iconfont icon-zitixieti"
                              data-name="italic">
                           </view>
                           <view :class="formats.underline ? 'ql-active' : ''"
                              class="iconfont icon-zitixiahuaxian" data-name="underline"></view>
                           <view :class="formats.strike ? 'ql-active' : ''"
                              class="iconfont icon-zitishanchuxian" data-name="strike"></view>
                           <!-- #ifndef MP-BAIDU -->
                           <view :class="formats.align === 'left' ? 'ql-active' : ''"
                              class="iconfont icon-zuoduiqi" data-name="align" data-value="left"></view>
                           <!-- #endif -->
                           <view :class="formats.align === 'center' ? 'ql-active' : ''"
                              class="iconfont icon-juzhongduiqi" data-name="align" data-value="center"></view>
                           <view :class="formats.align === 'right' ? 'ql-active' : ''"
                              class="iconfont icon-youduiqi" data-name="align" data-value="right"></view>
                           <view :class="formats.align === 'justify' ? 'ql-active' : ''"
                              class="iconfont icon-zuoyouduiqi" data-name="align" data-value="justify"></view>
                           <!-- #ifndef MP-BAIDU -->
                           <view :class="formats.lineHeight ? 'ql-active' : ''"
                              class="iconfont icon-line-height" data-name="lineHeight" data-value="2"></view>
                           <view :class="formats.letterSpacing ? 'ql-active' : ''"
                              class="iconfont icon-Character-Spacing" data-name="letterSpacing"
                              data-value="2em">
                           </view>
                           <view :class="formats.marginTop ? 'ql-active' : ''"
                              class="iconfont icon-722bianjiqi_duanqianju" data-name="marginTop"
                              data-value="20px"></view>
                           <view :class="formats.marginBottom ? 'ql-active' : ''"
                              class="iconfont icon-723bianjiqi_duanhouju" data-name="marginBottom"
                              data-value="20px"></view>
                           <!-- #endif -->
                           <view class="iconfont icon-clearedformat" @tap="removeFormat"></view>
                           <!-- #ifndef MP-BAIDU -->
                           <view :class="formats.fontFamily ? 'ql-active' : ''" class="iconfont icon-font"
                              data-name="fontFamily" data-value="Pacifico"></view>
                           <view :class="formats.fontSize === '24px' ? 'ql-active' : ''"
                              class="iconfont icon-fontsize" data-name="fontSize" data-value="24px"></view>
                           <!-- #endif -->
                           <view :class="formats.color === '#0000ff' ? 'ql-active' : ''"
                              class="iconfont icon-text_color" data-name="color" data-value="#0000ff"></view>
                           <view :class="formats.backgroundColor === '#00ff00' ? 'ql-active' : ''"
                              class="iconfont icon-fontbgcolor" data-name="backgroundColor"
                              data-value="#00ff00">
                           </view>
                           <view class="iconfont icon-date" @tap="insertDate"></view>
                           <view class="iconfont icon--checklist" data-name="list" data-value="check"></view>
                           <view :class="formats.list === 'ordered' ? 'ql-active' : ''"
                              class="iconfont icon-youxupailie" data-name="list" data-value="ordered"></view>
                           <view :class="formats.list === 'bullet' ? 'ql-active' : ''"
                              class="iconfont icon-wuxupailie" data-name="list" data-value="bullet"></view>
                           <view class="iconfont icon-undo" @tap="undo"></view>
                           <view class="iconfont icon-redo" @tap="redo"></view>
                           <view class="iconfont icon-outdent" data-name="indent" data-value="-1"></view>
                           <view class="iconfont icon-indent" data-name="indent" data-value="+1"></view>
                           <view class="iconfont icon-fengexian" @tap="insertDivider"></view>
                           <view class="iconfont icon-charutupian" @tap="insertImage"></view>
                           <view :class="formats.header === 1 ? 'ql-active' : ''"
                              class="iconfont icon-format-header-1" data-name="header" :data-value="1"></view>
                           <view :class="formats.script === 'sub' ? 'ql-active' : ''"
                              class="iconfont icon-zitixiabiao" data-name="script" data-value="sub"></view>
                           <view :class="formats.script === 'super' ? 'ql-active' : ''"
                              class="iconfont icon-zitishangbiao" data-name="script" data-value="super">
                           </view>
                           <view class="iconfont icon-shanchu" @tap="clear"></view>
                           <view :class="formats.direction === 'rtl' ? 'ql-active' : ''"
                              class="iconfont icon-direction-rtl" data-name="direction" data-value="rtl">
                           </view>
                        </view>
                        <view class="editor-wrapper">
                           <editor id="editor" class="ql-container" placeholder="开始输入..." show-img-size
                              show-img-toolbar show-img-resize @statuschange="onStatusChange"
                              :read-only="readOnly" @ready="onEditorReady">
                           </editor>
                        </view>
                     </view>
                  </view>
               </view>
            </view>
         </view>
@@ -212,6 +302,9 @@
            is_checked_visit: false,
            address: {}, // 临时获取的地址
            location_address: '', // 从地图获取到的地址
            //富文本
            readOnly: false,
            formats: {}
         };
      },
      onLoad(e) {
@@ -219,6 +312,14 @@
      },
      mounted() {
         this.getData();
      },
      computed: {
         selectedCategory() {
            if (!this.category || this.category.length === 0 || this.category_index === '') {
               return {};
            }
            return this.category[this.category_index] || {};
         }
      },
      methods: {
         getData() {
@@ -230,16 +331,21 @@
               },
               function(res) {
                  self.formData = res.data.model;
                  self.editorCtx.setContents({
                     html: res.data.model.content
                  });
                  self.category = res.data.category;
                  self.image_path = res.data.model.image ? res.data.model.image.file_path : '';
                  self.pic_path = res.data.model.pic? res.data.model.pic.file_path : '';
                  self.pic_path = res.data.model.pic ? res.data.model.pic.file_path : '';
                  self.category.forEach((item, index) => {
                     if (self.formData.category_id == item.category_id) {
                        self.category_index = index;
                     }
                  });
                  self.visit_supplier_name = res.data.model.visitSupplier ? res.data.model.visitSupplier.name : '';
                  self.space_supplier_name = res.data.model.spaceSupplier ? res.data.model.spaceSupplier.name : '';
                  self.visit_supplier_name = res.data.model.visitSupplier ? res.data.model.visitSupplier.name :
                     '';
                  self.space_supplier_name = res.data.model.spaceSupplier ? res.data.model.spaceSupplier.name :
                     '';
                  self.is_checked_visit = res.data.model.is_visit ? true : false;
                  self.address.location_address = res.data.model.location_address;
                  self.address.house_number = res.data.model.house_number;
@@ -248,7 +354,25 @@
               }
            );
         },
         // 提交
         save() {
            let self = this;
            // 获取富文本编辑器内容
            // 图文类型,获取编辑器内容
            self.editorCtx.getContents({
               success: (res) => {
                  // 将编辑器内容赋值给表单字段
                  self.formData.content = res.html;
                  // 继续执行保存逻辑
                  self.formSubmit();
               },
               fail: () => {
                  // 获取内容失败,继续执行保存逻辑
                  self.formSubmit();
               }
            });
         },
         // 提交
         formSubmit() {
            let self = this;
@@ -326,68 +450,78 @@
               title: '正在提交',
               mask: true
            });
            self._post('branch.admin.activity/edit', {activity_id: self.activity_id, formData: JSON.stringify(formData)}, function(res) {
            self._post('branch.admin.activity/edit', {
               activity_id: self.activity_id,
               formData: JSON.stringify(formData)
            }, function(res) {
               self.showSuccess(res.msg, function() {
                  self.gotoPage('/pages/branch/admin/activity/index')
               }, null, function(){
               }, null, function() {
                  uni.hideLoading();
               });
            });
         },
         /*上传*/
         openUpload(t) {
           this.upload_type = t;
           this.isupload = true;
            this.upload_type = t;
            this.isupload = true;
         },
         /*获取图片*/
         returnImgsFunc(e) {
           let self = this;
           if (e != null) {
            if (self.upload_type == 'image') {
              this.formData.image_id = e[0].file_id;
              this.image_path = e[0].file_path;
            } else {
              this.formData.pic_id = e[0].file_id;
              this.pic_path = e[0].file_path;
            let self = this;
            if (e != null) {
               if (self.upload_type == 'image') {
                  this.formData.image_id = e[0].file_id;
                  this.image_path = e[0].file_path;
               } else if (self.upload_type == 'insertImage') {
                  this.editorCtx.insertImage({
                     src: e[0].file_path,
                     alt: '图像',
                     success: function() {
                        console.log('insert image success')
                     }
                  })
               } else {
                  this.formData.pic_id = e[0].file_id;
                  this.pic_path = e[0].file_path;
               }
            }
           }
           this.isupload = false;
            this.isupload = false;
         },
         /*删除图片*/
         deleteImg(n){
         deleteImg(n) {
            this[n + '_path'] = '';
            this.formData[n + '_id'] = '';
         },
         // 选择活动分类
         changeCategory(e) {
            this.category_index = e.target.value;
            this.formData.category_id = this.category[this.category_index].category_id;
         },
         // 打开企业选择弹窗
         selectSupplier(e) {
            this.supplier_type = e;
            this.open_supplier = true;
         },
         // 关闭企业选择弹窗
         closeSupplierFunc(e) {
            if (e != null) {
               if (this.supplier_type == 'visit') {
                 this.formData.visit_supplier_id = e.shop_supplier_id;
                 this.visit_supplier_name = e.name;
                  this.formData.visit_supplier_id = e.shop_supplier_id;
                  this.visit_supplier_name = e.name;
               } else {
                 this.formData.space_supplier_id = e.shop_supplier_id;
                 this.space_supplier_name = e.name;
                  this.formData.space_supplier_id = e.shop_supplier_id;
                  this.space_supplier_name = e.name;
               }
            }
            this.open_supplier = false;
         },
         // 是否走访企业
         onChangeVisit(e) {
            this.is_checked_visit = e.target.value;
@@ -399,37 +533,37 @@
               this.formData.visit_supplier_id = '';
            }
         },
         // 取消选择的提供场地企业
         cancelSpace() {
           this.formData.space_supplier_id = '';
           this.space_supplier_name = '';
            this.formData.space_supplier_id = '';
            this.space_supplier_name = '';
         },
         // 选择活动时间
         changeTime(e) {
            console.log(this.formData.start_time)
         },
         // 打开地图选择地址 by lyzflash
         chooseLocation(n) {
            let self=this;
            let self = this;
            uni.chooseLocation({
               success: function (res) {
               success: function(res) {
                  console.log(res)
                  self.formData.longitude=res.longitude;
                  self.formData.latitude=res.latitude;
                  self.location_address=res.address;
                  self.address.house_number=res.name;
                  self.formData.longitude = res.longitude;
                  self.formData.latitude = res.latitude;
                  self.location_address = res.address;
                  self.address.house_number = res.name;
                  // 整理地址
                  self.organizeLocationAddress();
               },
               fail:function () {
               fail: function() {
                  console.log('获取失败')
               }
            });
         },
         // 整理地址(分离省市区) by lyzflash
         organizeLocationAddress() {
            let self = this;
@@ -443,57 +577,424 @@
               self.region = res.data.region;
            });
         },
         //富文本
         readOnlyChange() {
            this.readOnly = !this.readOnly
         },
         onEditorReady() {
            // #ifdef MP-BAIDU
            this.editorCtx = requireDynamicLib('editorLib').createEditorContext('editor');
            // #endif
            // #ifdef APP-PLUS || MP-WEIXIN || H5
            uni.createSelectorQuery().select('#editor').context((res) => {
               this.editorCtx = res.context
            }).exec()
            // #endif
         },
         undo() {
            this.editorCtx.undo()
         },
         redo() {
            this.editorCtx.redo()
         },
         format(e) {
            let {
               name,
               value
            } = e.target.dataset
            if (!name) return
            // console.log('format', name, value)
            this.editorCtx.format(name, value)
         },
         onStatusChange(e) {
            const formats = e.detail
            console.log(formats)
            this.formats = formats
         },
         insertDivider() {
            this.editorCtx.insertDivider({
               success: function() {
                  console.log('insert divider success')
               }
            })
         },
         clear() {
            uni.showModal({
               title: '清空编辑器',
               content: '确定清空编辑器全部内容?',
               success: res => {
                  if (res.confirm) {
                     this.editorCtx.clear({
                        success: function(res) {
                           console.log("clear success")
                        }
                     })
                  }
               }
            })
         },
         removeFormat() {
            this.editorCtx.removeFormat()
         },
         insertDate() {
            const date = new Date()
            const formatDate = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`
            this.editorCtx.insertText({
               text: formatDate
            })
         },
         insertImage() {
            this.isupload = true;
            this.upload_type = 'insertImage';
         }
      }
   }
</script>
<style lang="scss" scoped>
.activity-form {
   .form-section {
      padding: 0 20rpx;
      + .form-section {
         margin-top: 20rpx;
      }
      .form-item {
         padding: 20rpx 0;
         font-size: 26rpx;
         .upload-btn {
            height: 300rpx;
            border-radius: 12rpx;
            overflow: hidden;
            border: 1rpx solid #eee;
            image {
               width: 360rpx;
   .activity-form {
      .form-section {
         padding: 0 20rpx;
         +.form-section {
            margin-top: 20rpx;
         }
         .form-item {
            padding: 20rpx 0;
            font-size: 26rpx;
            .upload-btn {
               height: 300rpx;
            }
            .delete-img {
               position: absolute;
               width: 50rpx;
               height: 50rpx;
               background: rgba(0,0,0,.5);
               border-radius: 50rpx;
               line-height: 50rpx;
               right: 0;
               top: 0;
               border-radius: 12rpx;
               overflow: hidden;
               border: 1rpx solid #eee;
               image {
                  width: 360rpx;
                  height: 300rpx;
               }
               .delete-img {
                  position: absolute;
                  width: 50rpx;
                  height: 50rpx;
                  background: rgba(0, 0, 0, .5);
                  border-radius: 50rpx;
                  line-height: 50rpx;
                  right: 0;
                  top: 0;
                  display: flex;
                  justify-content: center;
                  align-content: center;
               }
            }
         }
      }
   }
}
.footer-btn {
   position: fixed;
   left: 0;
   bottom: 0;
   width: 100%;
   box-sizing: border-box;
   z-index: 9;
   border-top: 1rpx solid #eeeeee;
}
</style>
   .footer-btn {
      position: fixed;
      left: 0;
      bottom: 0;
      width: 100%;
      box-sizing: border-box;
      z-index: 9;
      border-top: 1rpx solid #eeeeee;
   }
   @font-face {
      font-family: iconfont;
      src: url("data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYZt980AACuYAAAAHEdERUYAKQBBAAAreAAAAB5PUy8yPJdOmAAAAVgAAABWY21hcLyvuFAAAAJMAAACGmdhc3D//wADAAArcAAAAAhnbHlm1+PZcgAABOAAACD0aGVhZBRVFL8AAADcAAAANmhoZWEISgQAAAABFAAAACRobXR4TS8LYAAAAbAAAACcbG9jYQhHD/wAAARoAAAAeG1heHABTgChAAABOAAAACBuYW1lKeYRVQAAJdQAAAKIcG9zdLoCe30AAChcAAADEgABAAAAAQAAUo9exF8PPPUACwQAAAAAANhk6GIAAAAA2GToYgAA/34EbAOAAAAACAACAAAAAAAAAAEAAAOA/4AAXARsAAAAAARsAAEAAAAAAAAAAAAAAAAAAAATAAEAAAA7AJUACQAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAQQBAZAABQAAAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA5ifspQOA/4AAXAOAAIIAAAABAAAAAAAABAAAAAAAAAABVQAABAAALwQAAJ0EAAAeBAAAQARsAAAEAAACBAAANwQAADcEAACVBAAAmgQAAJoEAAA+BAAAQAQAACUEAQAABAAAQAAnAIAAgABgAIAAgACAAIAAeAAAAFAAMABgAEAAYAAgAEAAOQAgAGAAYACAAD8AYAAgAEAA1wBeACEAwACAAOAAogBgABoAIQBgADIAiwBAAAAAAwAAAAMAAAAcAAEAAAAAARQAAwABAAAAHAAEAPgAAAA6ACAABAAa5ifmK+Yx5jPmPuZN5mDmZOZu5njmfuaE5ujm/ecs513n+Ohg6GXpZOso7AnsE+x87JTsnuyg7KX//wAA5ifmK+Yx5jPmPuZN5l/mZOZt5njmfuaE5ujm/ecs51zn+Ohg6GPpZOso7AnsE+x67H/snuyg7KX//xncGdkZ1BnTGckZuxmqGacZnxmWGZEZjBkpGRUY5xi4GB4Xtxe1FrcU9BQUFAsTpROjE5oTmROVAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgB8ANIA7AGaAiwCugNGBCAEgATiBRgFfgXyBl4GfAbGBwAHOAeWB7wH5ggoCGgI5AlSCaIKIgqmCxILPAtKC64L+gw8DIQMpgzKDQYNKA1GDaAN4g4MDlIObA6gDs4O6g8MD2APpA/GD+gQHhB6AAEAL/+AA8ADgAAJAAABNQkBNQQCFyYSAkABgP6A/r1YYdeEAoj4/oD+gP4G/rCo+QIEAAACAJ0ACANqAtQAKwA9AAAlIS4BJxE+ATchHgEXFQ4BIiY9AS4BJyEOAQcRHgEzITI2NzU0NjIWFxUOASUiLwEmNDYyHwEBNjIWFAcBBgL2/hsxQQICQTEB6y4+AgESGxIBGhP+FRYdAQEdFgHlFh0BEhsSAQJB/qoNCqMKFBkKjQFgChkUCv6KCggBQTEB5jBCAQE+Lx4NEhINHhQZAQEdFf4aFh0dFvkOEhIO+TFBnwqjChoTCY0BYAoUGQr+iQkAAAAABAAeAEoD4gJoAA8AGwAnADAAAAEGBAcmJC8BNzYkNxYEHwElDgEHHgEXPgE3LgEDLgEnPgE3HgEXDgEnDgEUFjI2NCYD0Ar+/sTE/v4LERELAQLExAECChL+Ho3WKirWjY3WKirWjTpNAQFNOjpNAQFNOh8qKj4qKgFEFtUPD9UWFRUX1Q4O1RcVzgeVMjKUCAiUMjKV/qwCTzw8UAEBUDw8T9cBK0ArK0ArAAEAQP+AA9EDgAAJAAAFNgIlFQkBFQQSAvphWP69/oABgAGNhICoAVAG/gGAAYD4C/38AAAIAAD/gARsA4AAHwArAEAATABVAGIAaAB1AAAFIikBLgEnET4BNzMVIyIGHQEhNS4BKwE1Mx4BFxEOARMiKQERFBYzITI2NwEwDwEGDwEjNzEuASc+ATceARcUBycOARQWMj8BNjcuAQUGDwE1NzMRIwEuASc1PgEyFh0BFAYlMjMhFSEHLgE9ATQ2MhYdARQGBAA5/m/+Ni49AQE9LlFRFx8EAAEeF1FRLj0BAT0IQP5A/gAfFwOUFx4B/uUCAgUGhTpiM0UBAUUzNEQBDmscJiY5FAkJAQEm/q0FIylTNDYCAAsPAQEPFw8P/aMi7AEN/eU1DA8PFw8PgAE9LgLXLj0BNh8Xa2sXHzYBPS79KS49AqH9yhcfHxcBIAMDCQjSoAJMOTlMAgJMOSIcjwEuRC4YEBIWIi4VBCAkQ1D+UgKGAQ8LogsQEAuiCw+GNlEBDwuiCxAQC6ILDwADAAL/fgPvA3AAKwBNAGcAAAEjNS4BJyMOAQcVIw4BBxUUFhcDHgE3ITUzFjI3MxYyNzMWNjcRPgE9AS4BAyM1NCYiBh0BIzU0JiIGBxUjNS4BIgYdASMiJicRIREUBhMUBiMhIiYnNT4BMyE1PgE3Mx4BFxUhMhYVA3/fAS8kpyQvAeAvPwEeGgEKYAYBMxUEBwO2AwcEhQZgCRoeAT+DVBAYEIwQGA8BiwEPGBBUJC8BAw4vZyAY/PIXIAEBIBcBGAEvIzgkLwEBFxggAnSoIzABATAjqAE/MDcgMg/+hlEjBAEBAQEBBCNQAXoPMiA3MD/9SN4MEBAM3t4MEBAM398MEBAM3ywoAU/+sScsAhIYICAYNxggqCMwAQEwI6ggGAAABQA3/8ED2gNPABEAIAAzAEQAXwAAASIjISYnJj4BMyEyFxYOASMGAzI7AR4BBwYHIS4BNzYzBSIjJSInJjY3NjMlIR4BFAYHIxUyOwEWFxYGBwYjBS4BNDYzATQmIg8BNTQmIgYdAScmIgYUFzEXFjI/ATE2ApxL0v7jHQgEBxgOAwQhCAQGGBBnZzlQiRcWBwke/LkXFwYIIAIjRs3+7RwJBAYKDQ8BcAFvFBYWFLwuJVQcCQQGCgwP/TcTFhYSAjQVHwotFB8ULQogFAlrCiEKawkB0AEZDBcOGgwXDgEBgAEeFBgBARwUG+YBGQwWBwkBARUiFAHoARgMFwcIAQEUIhX+2g8UCzKpDxQUD6kyCxQdCnYMDHYKAAAFADf/wQPaA00AEQAgADMARABeAAAlIiMhJicmPgE3ITIXFg4BIwYDMjsBHgEHBiMhIiY3NjcFIiMhJicmNjc2NykBMhYUBisBFTIzFxYXFgYHBgchIiY0NjMBMScmIg8BMQYUFjI/ARUUFjI2PQEXFjI2NAKcS9L+4x0IBAcYDgMEIQgEBhgQZ2c5UIkXFgcJHvy5FxcGCCACI0bN/u0cCQQGCg0PAXABbxQWFhS8LiVUHAkEBgoMD/03ExYWEgIrawohCmsJFCAKLRQfFC0KHxVbARkNFw0BGg0WDgEBgAEeFRgdFBoB5gEYDBcHCAEVIhXoAQEYCxcHCAEVIRUCv3cLC3cKHRQMMagPFBQPqDEMFB0AAAAACQCV/4EDawN+AB8ALwA9AE4AWgBrAHcAiACUAAABIzUuAScjLgEiBgcjDgEHFSMiBhURFBYXIT4BNRE0JiUzMjY3PgEyFhceATsBFSEBIREzFR4BMyEyNjc1MwUHJyYiBhQfARYyPwE2NCYiFyIGFBYzITI2NCYjBQcnJiIGFB8BFjI/ATY0JiIFIQ4BFBYzITI2NCYFBycmIgYUHwEWMj8BNjQmIgUhIgYUFhchPgE0JgNZVQEKB4IJPVQ9CYIHCgFVCAoKCAKyCAoK/b9/BwoBAyxALAMBCgd//kACJ/1yQwEKBwHkBwoBQ/4zSiEFDwoFLQYOBlYFCw5WBwoKBwEpBwoKB/58SiEFDwoFLQYOBlYFCw4Bf/7XBwoKBwEpBwoK/nVKIQUPCgUtBg4GVgULDgF//tcHCgoHASkHCgoC4TEHCgEoMjIoAQoHMQoI/MQHCgEBCgcDPAgKHwkIICkpIAgJbf0SAxg8CAoKCDzCSiEFCg8FLgUFVwUOCysKDwsLDwqlSSEFCw4GLQUFVgYOCysBCg8KCg8KpEohBgsPBS4FBVcFDgsrCg8KAQEKDwoAAAMAmv+AAzMDTQAXADQAPQAAJScmIgYUHwEhDgEUFhchBwYUFjI/ATY0ESEOAQceARczFRQWMjY1ETMRHgEyNjcRMzI2NCYBIy4BJz4BNzMDEmYIFBAIOv4kCg8PCgHcOggPFQhmCP5MV3MCAnNXNA4WD5kBDhYOAYAKDw/+djRBVwEBV0E0EmcHEBQIOgEOFg4BOggVDwhmCBQDQwJ0V1d0AuYLDw8LAk39swsPDwsCTQ4WD/6ZAldBQVcCAAAAAAMAmv+AAzMDTQAcACUAPQAAASEOAQceARczFRQWMjY1ETMRHgEyNjcRMzI2NCYBIy4BJz4BNzMBITc2LgEiDwEGFB8BFjI2NC8BIT4BNCYDGv5MV3MCAnNXNA4WD5kBDhYOAYAKDw/+djRBVwEBV0E0AUz+JToIAQ8UCGYICGYIFQ8IOgHbCw8PA00CdFdXdALmCw4OCwJN/bMLDg4LAk0OFg/+mQJXQUFXAv0AOggUEAdnCBQIZggPFQg6AQ4WDgAAAAADAD7/vgPCA0IADwAXABsAAAEhDgEHER4BFyE+ATcRLgEDJyMHIxMzEwEDMwMDUv1cL0ABAUAvAqQvQAEBQM82+DZn4m7i/uZevl0DQgFAL/1cL0ABAUAvAqQvQPzuqKgCav2WAfr+5wEZAAADAEAAAAPAAsAAFgAjAD8AAAEzPgE0JichDgEUFhczBwMGHgE2NxM2AT4BNyEeARQGByEuASUnJiIGFB8BBwYUFjI/ARcWMjY0LwE3NjQmIgcBtMwbJCQb/gAbJCQbuQEtBB02KgUtAv6IASQbAYAbJCQb/oAbJAK/VxMxJRJXVxIlMRNXVxMxJRJXVxIlMRMCQAEkNiQBASQ2JAEH/tgfMQsiHwEoEf4QGyQBASQ2JAEBJPJXEiUxE1dXEzElEldXEiUxE1dXEzElEgACACX/yQPbAzcABwBLAAABAxcWMzI3JgE3PgQ3GwEzFhcTHgEXHgEXFhceARcWHQEiJiMiBiM0PwI2PwE+ATU0Ji8BJQ4BFB4CHwEWFRQHIiYjIgYjBgHDYU47IAsWMv4rAQ0mGx0WB4egSQUCdRNTFwkxEQsJC04JAySRJSufFgJbCAYDBgQCIxcY/v4OOhAiFRYXAQEhhSIEFQIuAkH+/gEBAZH9+i0EBwULFhIBYAGeCAT+7i3NNhR+IRoHCBEDFgsPCQgYFBQCAgIFAgcFCVw3OgEhnhoSCgYCAgsWBQsMBQgAAAAABQAAABIEAAM3AA0AHQAtAD0ATQAAExEUBiIvASY0PwE2MhYBFRQGIyEiJj0BNDYzITIWNRUUBiMhIiY9ATQ2MyEyFjUVFAYjISImPQE0NjMhMhY1FRQGIyEiJj0BNDYzITIW2woQBaUFBaUFEAoDJQsH/CQHCwsHA9wHCwsH/ZIHCwsHAm4HCwsH/ZIHCwsHAm4HCwsH/CQHCwsHA9wHCwJJ/rcHCwWkBhAFpAUK/kFtCAsLCG0ICwvUbgcLCwduBwsL1G4HCwsHbggKCtRuCAoKCG4HCwsAAgBA/4ADwAMAAAcADwAAEyEVIxEjESMBIxEjESM1IUABgICAgAOA/Ij8AoABgID+gAGAAYD9AAMAgAAAAwAn/88D2QMxABgAHAAsAAA3MzI2PwEhFx4BOwE+AScDJicjIgYHAwYWATMXIwEhIgYHFR4BMyEyNjc1LgHNUQkPAz8BCEUDDwlRCwsE7AcTjAkPA9kECwEqElWyAhj8igwRAQERDAN2DBEBARG7DQmvrwkNAQ8KAkkSAQoJ/bcKDwH/xf5PEQ07DBERDDsNEQAAAAIAgACAA4AC1QALACQAABMzETMRMxEjESMRIykBIiY0PwE2NCYiBhUjPgE3HgEXFAYPASGAVatVVatVAwD/ACMyF88ZMkYyVQFhSElgAhsXzgEAAtX/AAEA/asBAP8AMkYX4BhHMjIjSGEBAWFIJD0Y3QAAAgCAAIADgALVAAsAJwAAEzMRMxEzESMRIxEjATMyFhURFAYrASImPQEzFTM1IzUzNSMVIzU0NoBVq1VVq1UCAKsjMjIjqyMyVaurq6tVMgLV/wABAP2rAQD/AAJVMiP+VSMyMiMrK6tVqysrIzIAAAIAYAAgA6EC4AAjAD0AAAEhBgcVFhczNjc1MxEjBgcVFhchNjc1JicjETMVFhczNjc1JgEjETMyNi8BJg8BBhY7AREjIgYfARY/ATYmAoj94AcBAQc4BwGoXAcBAQcBCAcBAQdcqAEHOAcBAQEKQUEEBAJlBgZkAwQEQUEEBANkBgZkAwQC4AEHgAcBAQdA/dABBzgHAQEHOAcBAjBABwEBB4AH/d8BhAgEfwYGfwQI/nwIBH8GBn8ECAAAAgCAAIADVQLVAAsAFgAAEzMRMxEzESMRIxEjITUzEQc1NzMRMxWAVatVVatVAdVWa2tVVQLV/wABAP2rAQD/AFUBnj5jPf4AVQAAAAMAgACAA4AC1QALABYAGQAAEzMRMxEzESMRIxEjITUjNRMzETMVIxUDNQeAVatVVatVAoDV1VUrK1VtAtX/AAEA/asBAP8A1VYBKv7WVtUBK5iYAAIAgACAA4AC1QALACsAABMzETMRMxEjESMRIwEzFSMVMx4BFw4BByMuASc1MxUzPgE0JicjLgEnNT4BgFWrVVWrVQIA1dVVSWACAmBJVSQwAVVVJDExJFUkMAEBMALV/wABAP2rAQD/AAJVVasBYUhJYAIBMCQrKwExSDABATAkqyQwAAMAgACAA4AC1QALACQAKAAAEzMRMxEzESMRIxEjATMeARcVIzUjFTMeARcVDgEHIy4BJxE+ARMVMzWAVatVVatVAgCrJDABVaurJDABATAkqyQwAQEwJKsC1f8AAQD9qwEA/wACVQEwJCsrqwEwJKskMAEBMCQBqyQw/qyrqwAAAgB4/6IDiQNeAC8AVgAAJSY1Ji8BJiIGFB8BITc2NCYiDwEOAR0BFBYfARYyPgEvASEHBhQWMj8CPgE1NyYBPgE9ASERIyIGFBY7ATI2NCYrAREhFRQWMjY9ATQmIyEiBh0BFBYDiAEBA2YFDgoFSf1jSQUKDgVmAgICAmYFDQoBBUkCnUkFCg4FZwEBAgEB/UUHCgERMwgJCQiICAkJCDMBEQoOCgoH/ZoHCgoeAQEDA2YFCg4FSUkFDgoFZwIFAwMCBQJoBAoNBUpKBQ4KBWYCAgQDAgIC2wEJCDP9MwoOCgoOCgLNMwgJCQhEBwoKB0QICQAAAAAFAAAAEgQAAzcADgAeAC4APgBOAAATFA8BBiImNRE0NjIfARYBFRQGIyEiJj0BNDYzITIWNRUUBiMhIiY9ATQ2MyEyFjUVFAYjISImPQE0NjMhMhY1FRQGIyEiJj0BNDYzITIWyQWlBQ8LCw8FpQUDNwsH/CQHCwsHA9wHCwsH/ZIHCwsHAm4HCwsH/ZIHCwsHAm4HCwsH/CQHCwsHA9wHCwGlCAakBQsHAUkICgWkBf7lbQgLCwhtCAsL1G4HCwsHbgcLC9RuBwsLB24ICgrUbggKCghuBwsLAAAABABQ/9ADsAMwABEAFQAZADIAAAkBJiMhDgEHER4BFyE+ATcRNCUzFSMBITUhFyM1NCYjISIGHQEjETMVFBYzITI2PQEzAQOd/v4TGv4iGyQBASQbAuAbJAH9cMDAAcD+QAHAkFASDv4ADhJQUBIOAQAOEk4BAgIbAQITASQb/SAbJAEBJBsB3hrocP2QkJCwDhISDrAC4JAOEhIOkP7+AAYAMP+wA9ADUAAQACEAMgBEAFQAWAAAASMiBh0BFBYyNj0BMzI2NCYhIyIGFBY7ARUUFjI2PQE0JgEjNTQmIgYdARQWOwEyNjQmJSIGHQEjIgYUFjsBMjY9ATQmEyEOAQcRHgEXIT4BNxEuAQERIREBcZEOEhIcEnENExMBk5EOEhIOcRIbExP+U3ESHBISDpENExMBkw4ScQ4SEg6RDRMTcvzgGyQBASQbAyAbJAEBJPzFAyACwBIOig0TEw1qEhwSEhwSag0TEw2KDhL9tmoOEhIOig4SEhwSihIOahIcEhIOig4SAlABJBv84BskAQEkGwMgGyT8oQMg/OAAAAAGAGD/wAOgA0AADwAfADMAPwBLAFcAAAEhDgEHER4BFyE+ATcRLgEDFAYjISImNRE0NjMhMhYVNyEiBhQWMyEyFhURFBYyNjURLgEBISIGFBYzITI2NCYHISIGFBYzITI2NCYHIyIGFBYXMz4BNCYC0P3gIi0BAS0iAiAiLQEBLRIJB/3gBwkJBwIgBwlw/eAOEhIOAiAHCRIcEgEt/u7+wA4SEg4BQA4SEg7+wA4SEg4BQA4SEo7ADhISDsAOEhICwAEtIv2gIi0BAS0iAmAiLf1RBwkJBwJgBwkJB9ASHBIJB/2gDhISDgJgIi3+2RIcEhIcEqASHBISHBKfEhsSAQESGxIAAAAFAED/oAPAA2AAHwAjAC0AOgBHAAABIzU0JiMhIgYdASMiBhQWOwETHgEXIT4BNxMzMjY0JiUhFSEBDgEjISImJwMhAzI2NRE0JiIGFREUFiMyNjURNCYiBhURFBYDoMASDv6ADhLADhISDiJOBDUmAaImNQROIg4SEv2yAUD+wAGRAhEN/l4NEQJNAnzeDhISHBISog4SEhwSEgLwUA4SEg5QEhwS/UUlLwEBLyUCuxIcEjAw/QwMEBAMArT9mxIOAdYNExMN/ioOEhIOAdYNExMN/ioOEgADAGD/wAOmAzcABAAPABMAAAEnAQc3AScjLgEPARc3NjQBIRUhAwib/jQnvwJpgwEEDQWDm4EF/LoDQPzAAfet/lm8DQJMlwUBBXitdwQN/WtAAAABACABQAPgAbAAAwAAEyEVISADwPxAAbBwAAAAAwBA/9UDwgMyAB4AJwA/AAABITY1LgEHDgEdAQ4BByMiBhURHgEzITI2NxM2LgIBETQ7AREjIiYBAw4BIyERPgE3NTY3NhYXFAcGFjMhMhYDWf73EwJUNi4sAUo5dhsoASYcAo0lOAdKBAseKf0QA01NAQIC/0kDFQ7+AE1fAQEiFiwBHAUSEQE0EhcCJ0I0PlcFB0QzOzpTBycc/nsdJi4lAYUXLCQT/fEBhQP+dQIBov57DhEBjhBzTjs5BgExIThUDxscAAADADn/uwPXAycAEwAlACkAAAEuAQ8BFzc2FhcWBg8BFzc+AiYBBiYnJjY/AScHDgEXHgE/AScTFwEnA45U82dlM2RNsz47E0lsMmwwOQ0i/k9Msz86E0lvMm9jGk9V82dpMzcz/qkzAqpjGk9SPlI6E0lMsz9XPlcnanp0/c06E0lMsz9aPlpU82djGk9VPwGBPv7iPQAAAAUAIAAAA+ADAAASABMAHAAgACQAAAE0LwEmDwEGIi8BLgEPAQYVESEDIx4BMjY0JiIGJREhEQMhESEDgAisDAlNBQ0E/QUMBbwFAwBgQAEkNiQkNiT9PwPAQPzAA0ABDQkFaQYJXgUF/AQBBaoFB/73AeAbJCQ2JCSl/QADAP1AAoAAAAkAYAARA6AC7wADAAcACwAMABUAFgAfACAAKQAAASEVIRUhFSEVIRUhAyMeATI2NCYiBhMjHgEyNjQmIgYTIx4BMjY0JiIGASACgP2AAoD9gAKA/YCAQAEkNiQkNiQ/QAEkNiQkNiQ/QAEkNiQkNiQC4GDQYNBgApAbJCQ2JCT+tRskJDYkJP61GyQkNiQkAAQAYAAAA6ADAAADAAcACwAPAAATIRUhESEVIRMhFSERIRUhYANA/MADQPzAgAJA/cACQP3AAwBg/qBgAUBg/qBgAAAABACAAFIDdQLAAAMABwALAA8AABMhESEREzMDKQERIRETMwOAAVX+q5BukAEyAVX+q5BukAGn/qsBVQEZ/uf+qwFVARn+5wAABgA//+ADoAMpAAUADwAbAB8AIwAnAAATMzUjFTMDMwcVMzUjNzUjETMVIxUzFSMVMzUjEyEVIRUhFSEVIRUhYzdbJCNAQIBAQIBJKipJgIDgAoD9gAKA/YACgP2AAmDJN/7AWzc3Wzf+iRI3EjfJAjdg0GDQYAAABABgAAADoAMAAAMABwALAA8AABMhFSERIRUhASEVIREhFSFgA0D8wANA/MABAAJA/cACQP3AAwBg/qBgAUBg/qBgAAACACAARAPUAqAABQALAAAJAjcnNyUHFwcXAQEs/vQBDEjU1AFUSNTUSAEMAqD+0v7SQO7uQEDu7kABLgAHAED/wAPAA0AACwAXABgAIQAiACsAMgAAAQ4BBx4BFz4BNy4BAy4BJz4BNx4BFw4BASMeATI2NCYiBgUjHgEyNjQmIgYFHgEXPgE3AgC+/QUF/b6+/QUF/b6j2QQE2aOj2QQE2f6dQAEkNiQkNiQBv0ABJDYkJDYk/l8Do3p6owMDQAX9vr79BQX9vr79/MUE2aOj2QQE2aOj2QH8GyQkNiQkGxskJDYkJJt6owMDo3oAAAADANf/7QMgAwYAEwAdACYAAAEmJzU+ATc2JzQmJyERITI3Njc0ATMWFxYUBwYrAQEGByM1Mx4BFAMBIUEiLw0YAXZ1/q4BbV0/PwH+OMNCHyAgH0LDATEfQ8/PQz4BQTMRAhAoFS0xX3QB/Oc+PGc+AY8BHyFgICL+yyMC7wFFYQAAAAADAF7/4AOdAyAACwATABcAAAEhIgYUFhchPgE0JiUzNSE1IRUhETMRIwN9/QANEhINAwAOEhL+NXABIP1QASBwcAGKEhsSAQESGxI28HBw/lD+4AAEACEAAAPgA2AABwALAA4AJwAACQEzNyEXMwEDEzMTBQchAw4BFSE1IzY3PgE1NCYjIgcXNjMyFhUUBgE7/uZ8PAEmPHv+56JwAnABc5ABINorOwEgnwkqOylHPXQaXwkhEBUhAwf8+a2tAwf+DgFT/q014AKHIlsxUBAhLzomNkFnDyYVERYqAAAAAAEAwP/AA0ADIAALAAABESERIxEzESERMxEC4P5AYGABwGADIP6AAYD8oAGg/mADYAAAAAACAID/ygOAAyYAEQAdAAAlPgE3ESMRDgEHLgEnESMRHgEFISIGFBYXIT4BNCYCAIWwA3ACcVVVcQJwA7AB5f1ADhISDgLADhISVQOwhQGZ/mdVcQICcVUBmf5nhbBOEhsSAQESGxIAAAEA4P/qAyADKgAbAAABISIGFBYXMwMjIgYUFhchPgE0JisBEzM+ATQmAwD+4A4SEg5g5loOEhIOASAOEhIOXudXDhISAyoSGxIB/UASGxIBARIbEgLAARIbEgAAAgCi/+YDgAMSAAcACgAABTcBIwEzNyElGwEDGWf+vVr+v2ZDAYr+nJ+fGgIDKvzWqGABjv5yAAAEAGAAAAOgAwAAAwAHAAsADwAAEyEVIREhFSERIRUhESEVIWADQPzAA0D8wAJA/cACQP3AAwBg/qBgAUBg/qBgAAAAAAQAGgAvA+4CvwALABcAIwAvAAABAiADDgEXFiA3NiYHBiAnJjQ3NiAXHgEBDgEHHgEXPgE3LgEHIi4BND4BMx4BFAYD0uP+K+QbARvPAgDPGwFLvv5AvgsM0gGW0wsB/lJffwICf19ffwICf58RHhERHhEbJCQBugEF/vsgUCH6+iFQSOTkDiIO8fEOIgEAAn9fX38CAn9fX3/eER4iHhEBJDYkAAAAAAQAIf+5A+ADJwACAAoADgAmAAABIRclATM3IRczAQMTMxMBNjc+ATU0JiMiBxc2MzIWFRQOAhUhNQPA/uCQ/gv+5nw8ASY8e/7nonACcAFkCSo7KUc9dBpfCSEQFSFYOwEgAyDg5/z5ra0DB/4OAVP+rf7UECEvOiY2QWcPJhURFipFWzFQAAAEAGAAAAOgAwAAAwAHAAsADwAAEyEVIREhFSERIRUhESEVIWADQPzAA0D8wANA/MADQPzAAwBg/qBgAUBg/qBgAAAAAAEAMgBGA+ICrwAPAAABNjIWFAcBDgEnASY+ARcBA6sKGhMJ/eYJGQr+rQ4HIg8BPAKlChMaCv3YCQEIASQMJAwM/vEAAQCLABsDZQL1ABoAAAkBNjQmIgcJASYiBhQXCQEGHgE3CQEWMjY0JwInATQKExoK/sz+ywoZFAoBNP7MDQojDQE1ATQKGhMKAYoBNAoaEwn+ywE1CRMaCv7M/ssOIwkMATX+ywkTGgoAAAAAAwBAABgDwALNABEAJgA5AAABNzYWFxEOAS8BIyImNRE0NjMBBiImNDc+ATU0JicmPgEXHgEVFAYXBi4BNz4BNCYnJj4BMhceARQGAQTNDyQBASQP0p8OEhIOAj8KGRMJHyEcHAwLJA0jJStwDSQJDDo9OzcJARMaCUBERwIbpAwRFP2eFBEMqBIOAQgOEv6VCRMaCh5PLChKHg4jCA4nYDQ5ZrMNCSMOO5ellDoKGhIKRKq/rQAAAAAAEgDeAAEAAAAAAAAAFQAsAAEAAAAAAAEACABUAAEAAAAAAAIABwBtAAEAAAAAAAMACACHAAEAAAAAAAQACACiAAEAAAAAAAUACwDDAAEAAAAAAAYACADhAAEAAAAAAAoAKwFCAAEAAAAAAAsAEwGWAAMAAQQJAAAAKgAAAAMAAQQJAAEAEABCAAMAAQQJAAIADgBdAAMAAQQJAAMAEAB1AAMAAQQJAAQAEACQAAMAAQQJAAUAFgCrAAMAAQQJAAYAEADPAAMAAQQJAAoAVgDqAAMAAQQJAAsAJgFuAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAAAKQ3JlYXRlZCBieSBpY29uZm9udAoAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAAVmVyc2lvbiAxLjAAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AAEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC4AAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAGh0dHA6Ly9mb250ZWxsby5jb20AAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAAAEAAgECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkEcmVkbwlzZWxlY3RhbGwHcHJldmlldwR1bmRvBGRhdGUHY2xlYXJ1cBU3MjNiaWFuamlxaV9kdWFuaG91anUWNzIyYmlhbmppcWlfZHVhbnFpYW5qdQotY2hlY2tsaXN0DWRpcmVjdGlvbi1sdHINZGlyZWN0aW9uLXJ0bAtmb250Ymdjb2xvcg1jbGVhcmVkZm9ybWF0BGZvbnQHb3V0ZGVudAhmb250c2l6ZQp0ZXh0X2NvbG9yD2Zvcm1hdC1oZWFkZXItMg9mb3JtYXQtaGVhZGVyLTMLbGluZS1oZWlnaHQPZm9ybWF0LWhlYWRlci0xD2Zvcm1hdC1oZWFkZXItNA9mb3JtYXQtaGVhZGVyLTUPZm9ybWF0LWhlYWRlci02EUNoYXJhY3Rlci1TcGFjaW5nBmluZGVudAZiYW9jdW4IcXVhbnBpbmcFZnV6aGkHc2hhbmNodQxiaWFuamlzZWt1YWkJZmVuZ2V4aWFuB2RpYW56YW4MY2hhcnVsaWFuamllC2NoYXJ1dHVwaWFuCnd1eHVwYWlsaWUManV6aG9uZ2R1aXFpB3lpbnlvbmcLeW91eHVwYWlsaWUIeW91ZHVpcWkJeml0aWRhaW1hCHhpYW9saWFuCXppdGlqaWFjdQ96aXRpc2hhbmNodXhpYW4Neml0aXNoYW5nYmlhbwp6aXRpYmlhb3RpDnppdGl4aWFodWF4aWFuCXppdGl4aWV0aQl6aXRpeWFuc2UIenVvZHVpcWkJeml0aXl1bGFuC3ppdGl4aWFiaWFvC3p1b3lvdWR1aXFpB2R1aWdvdXgGZ3VhbmJpDnNoZW5neWluX3NoaXRpAAAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwA6AAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAANhk6GIAAAAA2GToYg==") format("truetype");
      font-weight: 400;
      font-style: normal;
      font-display: swap
   }
   .iconfont {
      font-family: iconfont !important;
      font-size: 16px;
      font-style: normal;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale
   }
   .icon-redo:before {
      content: "\e627"
   }
   .icon-undo:before {
      content: "\e633"
   }
   .icon-indent:before {
      content: "\eb28"
   }
   .icon-outdent:before {
      content: "\e6e8"
   }
   .icon-fontsize:before {
      content: "\e6fd"
   }
   .icon-format-header-1:before {
      content: "\e860"
   }
   .icon-format-header-4:before {
      content: "\e863"
   }
   .icon-format-header-5:before {
      content: "\e864"
   }
   .icon-format-header-6:before {
      content: "\e865"
   }
   .icon-clearup:before {
      content: "\e64d"
   }
   .icon-preview:before {
      content: "\e631"
   }
   .icon-date:before {
      content: "\e63e"
   }
   .icon-fontbgcolor:before {
      content: "\e678"
   }
   .icon-clearedformat:before {
      content: "\e67e"
   }
   .icon-font:before {
      content: "\e684"
   }
   .icon-723bianjiqi_duanhouju:before {
      content: "\e65f"
   }
   .icon-722bianjiqi_duanqianju:before {
      content: "\e660"
   }
   .icon-text_color:before {
      content: "\e72c"
   }
   .icon-format-header-2:before {
      content: "\e75c"
   }
   .icon-format-header-3:before {
      content: "\e75d"
   }
   .icon--checklist:before {
      content: "\e664"
   }
   .icon-baocun:before {
      content: "\ec09"
   }
   .icon-line-height:before {
      content: "\e7f8"
   }
   .icon-quanping:before {
      content: "\ec13"
   }
   .icon-direction-rtl:before {
      content: "\e66e"
   }
   .icon-direction-ltr:before {
      content: "\e66d"
   }
   .icon-selectall:before {
      content: "\e62b"
   }
   .icon-fuzhi:before {
      content: "\ec7a"
   }
   .icon-shanchu:before {
      content: "\ec7b"
   }
   .icon-bianjisekuai:before {
      content: "\ec7c"
   }
   .icon-fengexian:before {
      content: "\ec7f"
   }
   .icon-dianzan:before {
      content: "\ec80"
   }
   .icon-charulianjie:before {
      content: "\ec81"
   }
   .icon-charutupian:before {
      content: "\ec82"
   }
   .icon-wuxupailie:before {
      content: "\ec83"
   }
   .icon-juzhongduiqi:before {
      content: "\ec84"
   }
   .icon-yinyong:before {
      content: "\ec85"
   }
   .icon-youxupailie:before {
      content: "\ec86"
   }
   .icon-youduiqi:before {
      content: "\ec87"
   }
   .icon-zitidaima:before {
      content: "\ec88"
   }
   .icon-xiaolian:before {
      content: "\ec89"
   }
   .icon-zitijiacu:before {
      content: "\ec8a"
   }
   .icon-zitishanchuxian:before {
      content: "\ec8b"
   }
   .icon-zitishangbiao:before {
      content: "\ec8c"
   }
   .icon-zitibiaoti:before {
      content: "\ec8d"
   }
   .icon-zitixiahuaxian:before {
      content: "\ec8e"
   }
   .icon-zitixieti:before {
      content: "\ec8f"
   }
   .icon-zitiyanse:before {
      content: "\ec90"
   }
   .icon-zuoduiqi:before {
      content: "\ec91"
   }
   .icon-zitiyulan:before {
      content: "\ec92"
   }
   .icon-zitixiabiao:before {
      content: "\ec93"
   }
   .icon-zuoyouduiqi:before {
      content: "\ec94"
   }
   .icon-duigoux:before {
      content: "\ec9e"
   }
   .icon-guanbi:before {
      content: "\eca0"
   }
   .icon-shengyin_shiti:before {
      content: "\eca5"
   }
   .icon-Character-Spacing:before {
      content: "\e964"
   }
   .page-body {
      height: calc(100vh - var(--window-top) - 0px)
   }
   .wrapper {
      height: 100%
   }
   .editor-wrapper {
      height: calc(100vh - var(--window-top) - 0px - 80px - 46px);
      background: #fff
   }
   .editor {
      .iconfont {
         display: inline-block;
         padding: 8px 8px;
         width: 24px;
         height: 24px;
         cursor: pointer;
         font-size: 20px;
      }
   }
   .toolbar {
      box-sizing: border-box;
      border-bottom: 0;
      font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
   }
   .ql-container {
      box-sizing: border-box;
      padding: 12px 15px;
      width: 100%;
      min-height: 30vh;
      height: 100%;
      /* margin-top: 20px; */
      font-size: 16px;
      line-height: 1.5;
   }
   .ql-active {
      color: #06c;
   }
   .iconfont {
      color: #000000;
   }
</style>